MongoDB——文档操作(查询文档)

x33g5p2x  于2022-04-13 转载在 其他  
字(1.6k)|赞(0)|评价(0)|浏览(641)

一、查询文档

1.1、查询集合中文档的语法

  • find 查询集合中的若干文档。语法格式如下:
db.collection.find(query, projection)
  • 查询集合中的第一个文档。语法格式如下
db.collection.findOne(query, projection)
参数作用
query可选,使用查询操作符指定查询条件
projection可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。投影时,id为1的时候,其他字段必须是1;id是0的时候,其他字段可以是0;如果没有_id字段约束,多个其他字段必须同为0或同为1。

1.2、查询集合中文档的示例

  • 查询集合中若干文档的示例
> db.books.find()


如果查询返回的条目数量较多,mongo shell则会自动实现分批显示。默认情况下每次只显示20条,可以输入it命令读取下一批。

  • 根据条件查询集合中的若干文档,且返回指定字段的示例
#查询tag=mongodb的所有文档,并且只返回title和author字段
db.books.find({tag:"mongodb"},{title:1,author:1})

  • 查询集合中的第一个文档的示例
db.collection.findOne(query, projection)

二、条件查询文档

2.1、查询条件对照表

SQLMQL
a = 1{a: 1}
a <> 1{a: {$ne: 1}}
a > 1{a: {$gt: 1}}
a >= 1{a: {$gte: 1}}
a < 1{a: {$lt: 1}}
a <= 1{a: {$lte: 1}}

2.2、查询逻辑对照表

SQL
a = 1 AND b = 1{a: 1, b: 1}或{$and: [{a: 1}, {b: 1}]}
a = 1 OR b = 1{$or: [{a: 1}, {b: 1}]}
a IS NULL{a: {$exists: false}}
a IN (1, 2, 3){a: {$in: [1, 2, 3]}}

2.3、查询逻辑运算符

逻辑运算符含义
$lt存在并小于
$lte存在并小于等于
$gt存在并大于
$gte存在并大于等于
$ne不存在或存在但不等于
$in存在并在指定数组中
$nin:不存在或不在指定数组中
$or匹配两个或多个条件中的一个
$and匹配全部条件

2.4、指定条件查询的示例

  • 查询带有nosql标签的book文档

  • 按照id查询单个book文档的示例
db.books.find({_id:ObjectId("62558ad4fc0392835a753c9b")})

  • 查询分类为“travel”、收藏数超过60个的book文档示例
db.books.find({type:"travel",favCount:{$gt:60}})

三、排序&分页

3.1、指定排序示例

  • 在 MongoDB 中使用 sort() 方法对数据进行排序。
#指定按收藏数(favCount)降序返回,-1表示降序;1表示升序 
db.books.find({type:"travel"}).sort({favCount:-1})

3.2、分页查询示例

  • skip用于指定跳过记录数,limit则用于限定返回结果数量。可以在执行find命令的同时指定skip、limit参数,以此实现分页的功能。
#假定每页大小为8条,查询第3页的book文档:
db.books.find().skip(8).limit(4)

3.3、正则表达式匹配查询

  • MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。
db.books.find({type:{$regex:"so"}})
//或者 
db.books.find({type:/so/})

相关文章