{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] } { _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] } { _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] } { _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] }
查询tags字段值包含子数组[ "A", "B" ]的文档:
db.inventory.find( { tags: { $eq: [ "A", "B" ] } } )
等同于以下写法:
db.inventory.find( { tags: [ "A", "B" ] } )
结果:
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] } { _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
{field: {$gt: value} }
说明
$gt的含义为大于
查询qty字段值大于20的文档
db.inventory.find( { qty: { $gt: 20 } } )
$gte的含义是大于或等于,使用方式等同$gt
{ field: { $in: [, , ... ] } }
说明:
$in操作符查询字段值等于指定数组中任何值的文档 如果字段为数组,则查询数组中至少有一个元素等于指定数组中任何值的文档准备数据:
{ _id: 1, item: "abc", qty: 10, tags: [ "school", "clothing" ], sale: false }
查询qty字段值是5或15的文档:
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
查询tags字段值中至少一个元素是”appliances”或”school”的文档:
db.inventory.find({ tags: { $in: ["appliances", "school"] } })
$lt的含义是小于,使用方式等同$gt
$lte的含义是小于,使用方式等同$gt
{field: {$ne: value} }
说明
$ne的含义是不等于,包含字段值不等于指定值或字段不存在两种情况。查询qty字段值不等于20或者不存在qty字段的文档:
db.inventory.find( { qty: { $ne: 20 } } )
{ field: { $nin: [, ... ]} }
说明
$nin的含义为不包含,包括以下情况(1)如果字段是数组类型,则数组中的每一个元素都不存在于给定的数组中。(2)如果字段为非数组,则该字段不存在于给定的数组中(3)文档不存在该字段。
查询qty字段值不等于5并且不等于15或者qty字段不存在的文档:
db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )