MongoDB 查询文档使用 find() 方法。
find() 方法以非结构化的方式来显示所有文档。find()查询数据的语法格式如下:
db.collection.find(query, projection)[.pretty()]
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
.pretty() : 美化查询结果。
除find()外,还有findOne() 方法,它只返回一个文档。
MongoDB 与 RDBMS Where 语句比较
MongoDB与常规的 SQL 数据条件查询类似,通过下表可以更好的理解 MongoDB 的条件语句查询:
| 操作 | 格式 | 范例 | RDBMS中的类似语句 | | --- | --- | --- | --- | | 等于 | {<key>:<value>
} | db.col.find({"by":"goudan"}).pretty()
| where by = 'goudan'
| | 小于 | {<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 条件。
语法格式如下:
>db.col.find({key1:value1, key2:value2}).pretty()
MongoDB OR 条件
MongoDB OR 条件语句使用了关键字 $or,语法格式如下:
>db.col.find( ? { ? ? $or: [ ? ? ? ? {key1: value1}, {key2:value2} ? ? ] ? } ).pretty()
查询案例
-- 查询myTable所有数据 > db.myTable.find() { "_id" : ObjectId("62a46dee4c256eb2b320f208"), "id" : 1, "name" : "goudan", "address" : "beijing" } { "_id" : ObjectId("62a46e194c256eb2b320f209"), "id" : 2, "name" : "mz", "address" : "beijing" } { "_id" : ObjectId("62a46e644c256eb2b320f20a"), "id" : 3, "name" : "sjg", "address" : "beijing" } { "_id" : ObjectId("62a46e644c256eb2b320f20b"), "id" : 4, "name" : "haonan", "address" : "jianshazui" } { "_id" : ObjectId("62a46eae4c256eb2b320f20c"), "id" : 5, "name" : "rz", "address" : "tangshan" } ? -- 查询myTable name=sjg的数据 > db.myTable.find({"name":"sjg"}) { "_id" : ObjectId("62a46e644c256eb2b320f20a"), "id" : 3, "name" : "sjg", "address" : "beijing" } ? -- 查询myTable name=sjg and address=beijing的数据 > db.myTable.find({"name":"sjg","address":"beijing"}) { "_id" : ObjectId("62a46e644c256eb2b320f20a"), "id" : 3, "name" : "sjg", "address" : "beijing" } ? -- 查询myTable name = sjg or address=beijing的数据 > db.myTable.find({$or:[{"name":"sjg"},{"address":"beijing"}]}) { "_id" : ObjectId("62a46dee4c256eb2b320f208"), "id" : 1, "name" : "goudan", "address" : "beijing" } { "_id" : ObjectId("62a46e194c256eb2b320f209"), "id" : 2, "name" : "mz", "address" : "beijing" } { "_id" : ObjectId("62a46e644c256eb2b320f20a"), "id" : 3, "name" : "sjg", "address" : "beijing" } ? -- 查询myTable id > 1 and (name=sjg or address=beijing)的数据 > db.myTable.find({"id":{$gt:1},$or:[{"name":"sjg"},{"address":"beijing"}]}) { "_id" : ObjectId("62a46e194c256eb2b320f209"), "id" : 2, "name" : "mz", "address" : "beijing" } { "_id" : ObjectId("62a46e644c256eb2b320f20a"), "id" : 3, "name" : "sjg", "address" : "beijing" } ? -- 查询myTable第一条数据 > db.myTable.findOne() { "_id" : ObjectId("62a46dee4c256eb2b320f208"), "id" : 1, "name" : "goudan", "address" : "beijing" } ? -- 查询myTable满足name=sjg or address=beijing条件的第一条数据 > db.myTable.findOne({$or:[{"name":"sjg"},{"address":"beijing"}]}) { "_id" : ObjectId("62a46dee4c256eb2b320f208"), "id" : 1, "name" : "goudan", "address" : "beijing" }