MongoDB 是一個基于文檔的 NoSQL 數(shù)據(jù)庫,它支持豐富的查詢操作。在 MongoDB 中,你可以使用各種查詢操作符和操作來執(zhí)行復(fù)雜查詢。以下是一些常見的復(fù)雜查詢方法:
比較查詢操作符:用于比較字段值。
$eq
:等于$ne
:不等于$gt
:大于$gte
:大于等于$lt
:小于$lte
:小于等于邏輯查詢操作符:用于組合多個查詢條件。
$and
:與(所有條件都必須滿足)$or
:或(任意一個條件滿足即可)$not
:非(不滿足條件)字段模式匹配:用于匹配字段值的特定模式。
$regex
:正則表達(dá)式匹配$options
:正則表達(dá)式選項(如 i
表示忽略大小寫)范圍查詢:用于查詢某個字段的指定范圍內(nèi)的值。
$gte
和 $lte
:范圍查詢$in
:包含某個值列表$nin
:不包含某個值列表文檔結(jié)構(gòu)查詢:用于查詢嵌套文檔的字段值。
$elemMatch
:匹配數(shù)組中的元素$exists
:檢查字段是否存在$type
:檢查字段類型聚合查詢:用于對數(shù)據(jù)進(jìn)行分組、排序、計算等操作。
$group
:按指定字段分組$sort
:對結(jié)果進(jìn)行排序$project
:選擇或排除字段$unwind
:將數(shù)組字段拆分為多個文檔$limit
:限制查詢結(jié)果數(shù)量$skip
:跳過指定數(shù)量的文檔$match
:過濾聚合結(jié)果$addFields
:添加新字段$replaceRoot
:替換文檔根節(jié)點以下是一個復(fù)雜的查詢示例,用于查找年齡大于 18 歲且名字包含 “John” 的用戶,并按年齡降序排列:
db.users.find({
$and: [
{ age: { $gt: 18 } },
{ name: { $regex: "John", $options: "i" } }
]
}).sort({ age: -1 })
這個查詢使用了 $and
操作符來組合兩個條件,$regex
來進(jìn)行正則表達(dá)式匹配,以及 sort()
方法來對結(jié)果進(jìn)行排序。你可以根據(jù)需要組合這些操作符來執(zhí)行更復(fù)雜的查詢。