12.MongoDb查询基本操作详解

12.MongoDb查询基本操作详解

最新内容会在源站更新.转载请保留原文链接: http://dashidan.com/article/mongodb/index.html

欢迎提出建议,QQ交流群:577105281

Mongodb提供了查询文档的方法db.collection.find().

例如:

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( {} )

这个对应的SQL语句为

SELECT * FROM inventory

② 指定条件查询

MongoDB使用<field>:<value>表达式来指定查询条件.

{ <field1>: <value1>, ... }

以下例子为从inventory集合中查找statusD的全部文档.

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

这个对应SQL表达式

SELECT * FROM inventory WHERE status = "D"

③ 通过条件操作符来设置查询条件

MongoDB操作符列表: query operators

操作符使用方式:

{ <field1>: { <operator1>: <value1> }, ... }

以下例子为从inventory集合中查找statusAD的全部文档.

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

另外也可以使用$or操作符来实现以上操作. 当执行相等性检查时, 采用$in而不要用$or(下文OR条件查询$or的应用场景示例.).

等同于SQL语句:

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

④ AND条件查询

MongoDB可以同时多个条件, 查询同时满足这些条件的文档.

以下为查询inventory集合中同时满足statusA并且qty小于30的全部文档.

db.inventory.find( { status: "A", qty: { $lt: 30 } } )

等同于SQL语句:

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

⑤ OR条件查询

MongoDB中可以将多个查询条件放在数组中, 通过$or操作符, 来查询满足其中至少一个条件的文档.

以下为查询inventory集合中同时满足statusA或者qty小于30的全部文档.

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

等同于SQL语句:

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

⑥ AND和OR联合查询

以下为查询inventory集合中同时满足statusA的, 并且满足qty小于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%")

MongoDB的$regex操作符可以做字符串模式匹配.

⑦ 查询行为

1.Cursor

db.collection.find()方法返回一个cursor执行匹配的文档.

2.读分离

MongoDB3.2新特性

For reads to replica sets and replica set shards, read concern allows clients to choose a level of isolation for their reads. For more information, see Read Concern.

⑧ 其他查询方法

  • db.collection.findOne
  • In aggregation pipeline, the $match pipeline stage provides access to MongoDB queries.

db.collection.findOne()方法等同于db.collection.find().limit(1).

⑨ 参考文章

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

⑩ 相关文章

MongoDB中文文档

    原文作者:程序员李少年
    原文地址: https://zhuanlan.zhihu.com/p/30666842
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞