博客
关于我
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 sql语句针对数据记录时间范围查询的效率对比
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql sysbench测试安装及命令
查看>>
mysql Timestamp时间隔了8小时
查看>>
mysql tinyint 1 boolean,MySQL tinyint to boolean
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
MySQL Troubleshoting:Waiting on query cache mutex
查看>>
mysql union orderby 无效
查看>>
mysql v$session_Oracle 进程查看v$session
查看>>
mysql VS mongoDB
查看>>
mysql where中如何判断不为空
查看>>
mysql where中如何判断不为空
查看>>
MySQL Workbench 使用手册:从入门到精通
查看>>
MySQL Workbench 数据库建模详解:从设计到实践
查看>>
MySQL Workbench 数据建模全解析:从基础到实践
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>