MongoDB查询文档

发布时间:2023年12月25日
3.5 MongoDB 查询文档

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"
}

Guff_hys_python数据结构,大数据开发学习,python实训项目-CSDN博客

文章来源:https://blog.csdn.net/HYSliuliuliu/article/details/134984125
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。