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
集合中查找status
为D
的全部文档.
db.inventory.find( { status: "D" } )
这个对应SQL表达式
SELECT * FROM inventory WHERE status = "D"
③ 通过条件操作符来设置查询条件
MongoDB操作符列表: query operators
操作符使用方式:
{ <field1>: { <operator1>: <value1> }, ... }
以下例子为从inventory
集合中查找status
为A
或D
的全部文档.
db.inventory.find( { status: { $in: [ "A", "D" ] } } )
另外也可以使用$or
操作符来实现以上操作. 当执行相等性检查时, 采用$in
而不要用$or
(下文OR条件查询
有$or
的应用场景示例.).
等同于SQL语句:
SELECT * FROM inventory WHERE status in ("A", "D")
④ AND条件查询
MongoDB可以同时多个条件, 查询同时满足这些条件的文档.
以下为查询inventory
集合中同时满足status
为A
并且qty
小于30
的全部文档.
db.inventory.find( { status: "A", qty: { $lt: 30 } } )
等同于SQL语句:
SELECT * FROM inventory WHERE status = "A" AND qty < 30
⑤ OR条件查询
MongoDB中可以将多个查询条件放在数组中, 通过$or
操作符, 来查询满足其中至少一个条件的文档.
以下为查询inventory
集合中同时满足status
为A
或者qty
小于30
的全部文档.
db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )
等同于SQL语句:
SELECT * FROM inventory WHERE status = "A" OR qty < 30
⑥ AND和OR联合查询
以下为查询inventory
集合中同时满足status
为A
的, 并且满足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/