数组查询操作符:
$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] } },查询键值等于指定数组中任意值的文档