MongoDB 查询文档
MongoDB 查询文档使用 find()
方法。
find() 方法以非结构化的方式来显示所有文档。
MongoDB 查询数据的语法格式如下:
1 | db.collection.find(query, projection) |
参数说明:
- query: 可选,使用查询操作符指定查询条件;
- projection: 可选,使用投影操作符指定返回的键。查询时返回文档中所有的键值,只需要省略该参数即可(默认省略)
如果需要以易读的方式来读取数据,可以使用 pretty()
方法,语法格式如下:
1 | db.col.find().pretty |
pretty() 方法以格式化的方式来显示所有文档
实例
以下实例我们查询了集合 col 中的数据:
1 | > db.col.find().pretty() |
除了 find()
方法之外,还有一个 findOne()
方法,它只返回一个文档
MongoDB 与 RDBMS Where 语句比较
如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句:
操作 | 格式 | 范例 | RDBMS 中类似的语句 |
---|---|---|---|
等于 | {<key>:<value>} | db.col.find({“by”:”菜鸟教程”}).pretty() | where by = “菜鸟教程” |
小于 | {<key>: {$lt:<value>}} | db.col.find({“likes”:{$lt:50}}).pretty() | where likes < 50 |
小于或等于 | {<key>: {$lte:<value>}} | db.col.find({“likes”:{$lte:50}}).pretty() | where likes <=50 |
大于 | {<key>: {$gt:<value>}} | db.col.find({“likes”: {$gt:50}}).pretty() | where likes > 50 |
大于或等于 | {<key>: {$gte:<value>}} | db.col.find({“likes”:{$gte:50}}).pretty() | where likes >= 50 |
不等于 | {<key>:{$ne:<value>}} | db.col.find({“likes”: {$ne:50}}).pretty() | where likes != 50 |
MongoDB AND 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND
条件
语法格式如下:
1 | db.col.find({key1:value1, key2:value2}).pretty() |
实例
以下实例通过 by 和 title 键来查询菜鸟教程中的 MongoDB 教程的数据:
1 | > db.col.find({ 'by':'菜鸟教程', 'title':'MongoDB' }).pretty() |
以上实例中类似于 WHERE 语句:WHERE by=’菜鸟教程’ AND title=’MongoDB’
MongoDB OR 条件
MongoDB OR 条件语句使用了关键字 $or
,语法格式如下:
1 | db.col.find( |
实例
以下实例中,我们演示了查询 by 值为 runoob 或键 title 值为 MongoDB 的文档:
1 | > db.col.find({$or: [{'by':'runoob'}, {'title': 'MongoDB'}]}).pretty() |
AND 和 OR 联合使用
以下实例演示了 AND 和 OR 联合使用,类似常规 SQL 语句:’where likes>50 AND (by=’菜鸟教程’ OR title=’MongoDB’)’
1 | > db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB"}]}).pretty() |