博客
关于我
MongoDB文档常见查询
阅读量:795 次
发布时间: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/

你可能感兴趣的文章
MyBatis学习总结(6)——调用存储过程
查看>>
Mock.js 的语法规范学习
查看>>
mockcpp & testngpp在2010.7~11月的改进
查看>>
Mock在接口测试中的实际应用
查看>>
Mock模拟测试实战
查看>>
Modbus RTU串口通信实验
查看>>
Modbus RTU和Modbus TCP之间的区别
查看>>
Model-Based Reinforcement Learning(基于模型的强化学习)详解-ChatGPT4o作答
查看>>
Model-Free Reinforcement Learning(无模型强化学习)详解-ChatGPT4o作答
查看>>
modprobe
查看>>
module 'requests' has no attribute 'get' python
查看>>
module ‘@babel/runtime/helpers/interopRequireDefault.js‘ is not defined报错解决方法
查看>>
ModuleNotFoundError: No module named ‘_lzma‘
查看>>
MogoTemplate基本入门(Mongodb数据库基本增删改查)
查看>>
Mojarra JSF ViewState 反序列化漏洞复现
查看>>
My new English
查看>>
Mojo:比 Python 快 35000 倍的编程语言诞生!
查看>>
MolecularNotes 开源项目教程
查看>>
MolGAN网络架构:用于小分子图的隐式生成模型
查看>>
Moment.js
查看>>