##Mongodb查询语法
一.查询文档
本段提供了使用 mongo shell中 db.collection.find() 方法查询的案例。案例中使用的 inventory 集合数据可以通过下面的语句产生。
db.inventory.insertMany([
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }]);
1.1 检索集合中的所有文档
db.inventory.find( {} )
1.2 等值查询
在查询过滤文档中使用 **<字段>:<值>** 表达式实现等值查询:
{ <field1>: <value1>, ... }
返回 inventory 集合中 status 等于 " D "** 的所有文档:
db.inventory.find( { status: "D" } )
1.3 查询条件中使用的操作符
查询过滤文档中可以使用查询操作符来指定多个条件,格式如下:
{ <field1>: { <operator1>: <value1> }, ... }
集合中 status 等于 " A " 或 " D " 的所有文档 。
db.inventory.find( { status: { $in: [ "A", "D" ] } } )
1.4 AND 条件
返回 inventory 集合中 status 等于 " A " 并且 qty小于($lt)30 的所有文档:
db.inventory.find( { status: "A", qty: { $lt: 30 } } )
关于 MongoDB 的比较操作符可以参考比较操作符。
1.5 OR 条件
下面的案例返回 inventory 集合中 status 等于 "A" 或者 qty小于 ($lt)30 的所有文档。
db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )
1.6 同时使用 AND 和 OR 条件
下面的案例返回 inventory 集合中 status 等于 "A" 并且 qty 小于 ($lt) 30 或者 item 是以 p 字符开头的所有文档。
db.inventory.find( { status: "A", $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]} )
上述操作对应如下 SQL :
SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")
二.查询嵌套文档
本段提供了使用 mongo shell 中 db.collection.find() 方法查询嵌套文档的操作案例。案例中使用的 inventory 集合数据可以通过下面的语句产生。
db.inventory.insertMany( [
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D&