數組查詢操作符:
$all
用法:{ field : {$all:[value1,value2]}},查詢數組中包含指定值的文檔,條件的數組是文檔中已有數組的子集
示例:
db.inventory.find({"tags":{$all:["apple"]}},{"_id":0})
{ "name" :"t1", "amount" : 16, "tags" : ["apple", "banana" ] }
{ "name" :"t3", "amount" : 58, "tags" : ["orange", "apple" ] }
當只需要匹配數組的一個值時,簡便寫法:
db.inventory.find({"tags":"apple"},{"_id":0})
{ "name" :"t1", "amount" : 16, "tags" : ["apple", "banana" ] }
{ "name" :"t3", "amount" : 58, "tags" : ["orange", "apple" ] }
$size
用法:{ field:{ $size:size } },查詢數組中元素的數量等於size的文檔,size必須是數字
示例:
db.inventory.find({"tags":{$size:2}},{"_id":0})
{ "name" :"t1", "amount" : 16, "tags" : ["apple", "banana" ] }
{ "name" :"t2", "amount" : 50, "tags" : ["banana", "orange" ] }
{ "name" :"t3", "amount" : 58, "tags" : ["orange", "apple" ] }
$elemMatch
用法:{field:{$elemMatch:{exp}}} ,文檔內部存在由文檔作爲元素組成數組,如果要以數組中的文檔作爲查詢條件,就可以用$elemMatch操作符指向內部文檔。
算術操作符
$gt
用法:{ field : { $gt:value } },查詢鍵值大於指定值的所有文檔
示例:
db.inventory.find({"amount":{$gt:50}},{"_id":0})
{ "name" :"t3", "amount" : 58, "tags" : ["orange", "apple" ] }
$gte
用法:{ field: { $gte: value } },查詢鍵值不小於指定值的所有文檔。
$lt
用法:{ field: { $lt: value } },查詢鍵值小於指定值的所有文檔。
$lte
用法:{ field: { $lte: value } },查詢鍵值不大於指定值的所有文檔。
$eq
用法:{ field: { $eq: value } },查詢鍵值等於指定值的所有文檔。
$ne
用法:{ field: { $ne: value } },查詢鍵值不等於指定值的所有文檔。
$in
用法:{ field: { $in: [value1,value2] } },查詢鍵值等於指定數組中任意值的文檔