博客
关于我
MongoDB文档常见查询
阅读量:796 次
发布时间:2023-02-09

本文共 2080 字,大约阅读时间需要 6 分钟。

MongoDB 文档查询操作教程

1. 文档查询操作

1.1 查询数据

(1)查询所有数据

使用 find() 方法查询集合中的所有文档。默认情况下,find() 会返回所有字段。

db.coll3.find()

(2)查询单个数据

要查询单个文档,可以使用 findOne() 方法。若不指定查询条件,findOne() 会返回集合中第一个文档。

db.coll3.findOne()

要查询满足特定条件的单个文档,可以指定查询条件。

db.coll3.findOne({ sex: 0 })

1.2 条件查询

常用的查询条件如下:

操作 格式 例子 MySQL 类似语句
等于 {key: value} db.user.find({ _id: 1 }) where id = 1
小于 {key: {$lt: value}} db.user.find({ age: {$lt: 18} }) where age < 18
小于等于 {key: {$lte: value}} db.user.find({ age: {$lte: 18} }) where age <= 18
大于 {key: {$gt: value}} db.user.find({ age: {$gt: 18} }) where age > 18
大于等于 {key: {$gte: value}} db.user.find({ age: {$gte: 18} }) where age >= 18
不等于 {key: {$ne: value}} db.user.find({ age: {$ne: 18} }) where age != 18
包含 {key: /value/} db.user.find({ name: /赵/ }) where name like '%赵%'
以...开头 {key: /^value/} db.user.find({ name: /^赵/ }) where name like '赵%'
以...结尾 {key: /value$/} db.user.find({ name: /赵$/ }) where name like '%赵'
在...之中 {key: {$in: [v1, v2, ...]}} db.user.find({ age: {$in: [1, 2, 3]}) where age in (1, 2, 3)
不在...之中 {key: {$nin: [v1, v2, ...]}} db.user.find({ age: {$nin: [1, 2, 3]}) where age not in (1, 2, 3)

(1)AND 条件

可以通过在查询对象中指定多个键来实现AND逻辑。

db.coll3.find({ "name": "露娜", sex: 0 })

(2)OR 条件

使用 $or 操作符来实现OR逻辑。

db.coll3.find({ "$or": [{ age: 17 }, { sex: 1 }] })

(3)AND 和 OR 联合使用

可以将AND和OR条件结合使用。

db.coll3.find({ sex: 1, $or: [{ age: 18 }, { age: 19 }] })

(4)模糊查询

使用正则表达式进行模糊查询。

db.coll3.find({ "name": /赵/ })

1.3 查询文档部分字段(投影查询)

默认情况下,find() 会返回所有字段。如果只需要特定字段,可以使用投影操作符。

db.coll3.find({ sex: 0 }, { age: 1, name: 1 })

如果不希望返回 _id,可以在投影对象中指定 _id: 0

db.coll3.find({ sex: 0 }, { age: 1, name: 1, _id: 0 })

1.4 统计查询

使用 count() 方法统计满足条件的文档数量。

db.coll3.find({ "age": { $lt: 20 } }).count()  # 返回4db.coll3.find({ "age": { $lt: 20 }, "sex": 0 }).count()  # 返回2

1.5 排序查询

使用 sort() 方法对查询结果进行排序。

db.coll3.find({ "age": { $lte: 20 }, "$or": [{ name: "孙尚香" }, { sex: 0 }] }).sort({ sex: 1, age: -1 })

1.6 分页查询

使用 skip()limit() 方法进行分页查询。

db.coll3.find().skip(2).limit(2)

或者结合排序和分页:

db.coll3.find().sort({ age: -1 }).skip(2).limit(2)

以上内容经过优化后更加简洁明了,适合技术读者阅读,同时经过优化有助于提高搜索引擎排名。

转载地址:http://eiffk.baihongyu.com/

你可能感兴趣的文章
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>
Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
查看>>
mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
查看>>
mysql 数据库备份及ibdata1的瘦身
查看>>
MySQL 数据库备份种类以及常用备份工具汇总
查看>>
mysql 数据库存储引擎怎么选择?快来看看性能测试吧
查看>>
MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
查看>>
MySQL 数据库的高可用性分析
查看>>
MySQL 数据库设计总结
查看>>
Mysql 数据库重置ID排序
查看>>
Mysql 数据类型一日期
查看>>
MySQL 数据类型和属性
查看>>
mysql 敲错命令 想取消怎么办?
查看>>
Mysql 整形列的字节与存储范围
查看>>
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>