查询文档

例子

准备数据

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" }
]);

查询

  • 查询集合中的所有文档
> db.inventory.find( {} )
> db.inventory.find(  )

相当于SQL中的

SELECT * FROM inventory

更多信息请参考:find()

  • 指定=条件

例子:从集合中选择状态为“d”的所有文档:

db.inventory.find( { status: "D" } )

相当于SQL中的

SELECT * FROM inventory WHERE status = "D"
  • 使用查询运算符指定条件

比如

db.inventory.find( { status: { $in: [ "A", "D" ] } } )

相当于SQL中的

SELECT * FROM inventory WHERE status in ("A", "D")

备注:$or与 $in有相同的作用,但是请尽量使用 $in

  • 指定and条件
    复合查询可以为集合文档中的多个字段指定条件
db.inventory.find( { status: "A", qty: { $lt: 30 } } )

相当于SQL中的

SELECT * FROM inventory WHERE status = "A" AND qty < 30

备注:$lt 小于运算符 less then

  • 指定or条件
db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )

相当于SQL中的

SELECT * FROM inventory WHERE status = "A" OR qty < 30

使用比较运算符的查询受类型括号限制。

  • 同时指定and和or条件
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%")

mongodb支持正则表达式$ regex查询来执行字符串模式匹配。

查询嵌入/嵌套文档

db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )  //要求条件完全匹配,包括顺序

用.标记可以访问嵌套文档中的某个字段“field.nestedField”

> db.inventory.find( { "size.uom": "in" } )    //查询inventory集合中size嵌套字段uom值为in的文档
> db.inventory.find( {"size.h":{$lt:15}})  //查询inventory集合中size嵌套字段h值比15小的文档
  • 和条件
db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )  //查询inventory集合中size嵌套字段h值比15小,uom值为in, status="D"的文档

其他查询教程

行为

光标

  • db.collection.find()方法将光标返回到匹配的文档。

读取隔离

3.2新增功能

对于对副本集和副本集碎片的读取,读取关注点允许客户机为其读取选择一个隔离级别。具体请参考

其他方法

  • db.collection.findOne
  • 聚合管道中,$match pipeline阶段提供对MongoDB查询的访问。

原文:https://docs.mongodb.com/manual/tutorial/query-documents/
https://docs.mongodb.com/manual/tutorial/query-embedded-documents/

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/88644817