返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >详解MongoDB的条件查询和排序
  • 692
分享到

详解MongoDB的条件查询和排序

2024-04-02 19:04:59 692人浏览 泡泡鱼
摘要

目录find 方法 条件组合 比较操作符 IN 查询 限制返回结果条数和跳过数据 排序 总结 find 方法 查询的基本格式是db.collection.find({条件}),其中

find 方法

查询的基本格式是db.collection.find({条件}),其中条件是可选的,类似于 Mysql 的 WHERE 条件一样。示例如下:


//  查找全部文档
db.collection.find({});
// 查找指定条件的文档
db.collection.find({key: value});
// 查找昵称为岛上码农的用户
db.users.find({nickname: '岛上码农'});

条件组合

可以使用 $and、$or 和 $not 来设置组合条件。


// AND 查询格式
db.collection.find({
  $and: [
    {key1: value1}, {key2: value2}
  ]
});

// OR 查询格式
db.collection.find({
  $or: [
    {key1: value1}, {key2: value2}
  ]
});

// NOT 查询格式
db.collection.find(
    {key: {$not: {条件表达式}}
);

例如下面的 users数据集:


[
  {nickname: '岛上码农', score: 90, gender: 'male'}, 
  {nickname: '玛丽', score: 98, gender: 'female'}, 
  {nickname: 'Tom', score: 76, gender: 'male'}
]

查找分数是90或76分的用户:


db.users.find({
  $or: [
    {score: 90}, {score: 76}
  ]
});

查找性别不是 male 的用户和查找分数高于80分用户:


db.users.find({
  gender: {$not: {$eq: 'male'}}
});

db.users.find({
  score: {$not: {$lt: 80}}
});

其中$eq为相等条件,$lt为小于条件。 条件可以嵌套使用,例如and和and和or 嵌套,表示(a || b) && (c || d),格式如下:


// AND与OR 嵌套查询格式
db.collection.find({
  $and: [
    {$or: [{key1: value1}, {key2: value2}]},
    {$or: [{key3: value1}, {key4: value2}]},
  ]
});
//查找 nickename是岛上码农或玛丽,且分数是90或76的用户
db.users.find({
  $and: [
    {$or: [{nickname: '岛上码农'}, {nickname: '玛丽'}]},
    {$or: [{score: 90}, {score: 76}]}
  ]
});
//查找 nickname是岛上码农且分数是90,或nickname是玛丽且分数是76的用户
db.users.find({
  $or: [
    {$and: [{nickname: '岛上码农'}, {score: 90}]},
    {$and: [{nickname: '玛丽'}, {score: 76}]}
  ]
});
//查找nickname是岛上码农,且分数不低于80分的用户
db.users.find({
  $and: [
    {nickname: '岛上码农'},
    {score: {$not:{$lt: 80}}}
  ]
});

比较操作符

mongoDB 提供了如下比较操作符,比较操作符的格式为{key: {$op: value}}:

  • $eq:相等操作符,即 a == b;
  • $gt:大于,即 a > b;
  • $gte:大于等于,即 a >= b;
  • $lt:小于,即 a < b;
  • $lte:小于等于,即 a <= b。

IN 查询

in 查询的格式和比较操作符类似,只是对应的值是数组,即


db.collection.find({key: {$in: [...]}});

例如,需要查找分数为90,76的用户:


db.users.find({score: {$in: [76, 90]}});

in 查询也可以和其他条件组合,如and 查询:


db.users.find({
 $and: [
   {score: {$in: [76, 90]}},
   {gender: 'male'}
   ]
});

限制返回结果条数和跳过数据

find 方法会将所有匹配条件的数据查找出来,因此对于数据集很大的时候会导致速度很慢且产生大量的 磁盘 I/O,如果确定数据只有1条的时候可以使用 findOne,如果要限制查询条数可以使用 limit或 skip。limit 是查询到指定数量后的结果就返回,而 skip 是跳过前面指定数量的结果。


// 查找指定条件的文档的 n 条数据
db.collection.find({key: value}).limit(n);
//示例:查询超过80分的3个用户
db.users.find({score: {$gt: 80}}).limit(3);
// 查找指定条件的文档的,跳过前 n 条数据
db.collection.find({key: value}).skip(n);
//示例: 查询超过80分的用户,跳过前3个
db.users.find({score: {$gt: 80}}).skip(3);

排序

排序使用格式如下:


db.collection.find({条件}).sort({key: 1});

其中1表示升序,-1表示降序,例如我们需要以分数降序排序:


db.users.find().sort({score: -1});

总结

本篇介绍了 MonGoDB 的条件查询操作,限制返回条数和排序。可以看到,MongoDB 的操作虽然语法和 sql 不同,但是都有对应的功能辅助查询,对于查询来说也是十分便捷的。

以上就是详解MongoDB的条件查询和排序的详细内容,更多关于MongoDB的条件查询和排序的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解MongoDB的条件查询和排序

本文链接: https://lsjlt.com/news/128904.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解MongoDB的条件查询和排序
    目录find 方法 条件组合 比较操作符 IN 查询 限制返回结果条数和跳过数据 排序 总结 find 方法 查询的基本格式是db.collection.find({条件}),其中...
    99+
    2024-04-02
  • MySQL基础篇 | 简单的查询、条件查询、排序查询
    ✅作者简介:大家好我是@每天都要敲代码,希望一起努力,一起进步! 📃个人主页:@每天都要敲代码的个人主页 🔥系列专栏:MySQL专栏 目录 一:简单的查询 1. 查询一个字段 2. 查询多个字段  3...
    99+
    2023-09-01
    mysql 数据库 sql
  • MybatisPlus中的多表条件排序查询
    目录1.pom文件2.自定义返回对象3.mapper方法4.xml自定义sql5.service方法6.QueryUtil自定义的查询工具7.常量配置8.controller方法9....
    99+
    2024-04-02
  • MongoDB多条件查询
    1.查看集合 show collections2.向集合中添加数据 db.runoob.insertMany([ { 'title':'data1', 'u...
    99+
    2024-04-02
  • mongodb如何带条件查询
    在MongoDB中,可以使用`find()`方法来执行带条件查询。以下是一些常见的带条件查询示例:1. 等于条件查询:```db.c...
    99+
    2023-09-04
    mongodb
  • mongodb如何查询时间条件
    在 MongoDB 中,您可以使用 `$gt`、`$lt`、`$gte`、`$lte` 操作符来查询时间条件。这些操作符分别表示大于...
    99+
    2023-08-31
    mongodb
  • MongoDB之数据查询(数据排序)
    在MongoDB里面数据的排序操作使用“sort()”函数,在进行排序的时候可以有两个顺序:升序(1),降序(-1)。 范例:数据排序 > db.emp.find().sort({"sal":-1}...
    99+
    2024-04-02
  • mongodb多条件查询报错怎么解决
    在 MongoDB 中进行多条件查询时,需要注意以下几点来避免报错: 确保查询条件的语法正确:检查查询条件中的字段名是否正确,是...
    99+
    2024-04-10
    mongodb
  • mongodb多条件查询怎么实现
    在 MongoDB 中,可以使用 $and、$or 等逻辑运算符来实现多条件查询。以下是使用 $and 运算符实现多条件查询的示例:...
    99+
    2024-04-10
    mongodb
  • sql查询结果按条件排序的方法是什么
    在SQL中,可以使用ORDER BY子句对查询结果进行排序。ORDER BY子句可以按照一个或多个列进行排序,可以根据升序或降序排序...
    99+
    2023-09-16
    sql
  • mybatis mapper.xml 区间查询条件详解
    目录mybatis mapper.xml 区间查询条件对 null 和 ” 分开进行判断tk mybatis通用mapper,复杂and or条件查询方式1:Weekend语法方式2...
    99+
    2024-04-02
  • mongodb多条件查询的方法是什么
    在MongoDB中,可以使用$and和$or操作符来实现多条件查询。 使用$and操作符进行多条件查询: db.collecti...
    99+
    2024-03-08
    mongodb
  • MongoDB聚合查询详解
    目录聚合管道管道阶段常见操作更多操作 - 投影更多操作 - 展开更多操作 - 分组更多操作 - 入库条件组累加器算术运算最值运算数组提取其他运算聚合管道 聚合框架是 MongoDB ...
    99+
    2022-12-26
    MongoDB 聚合查询 mongodb 聚合查询 性能 mongodb 聚合查询优化
  • MongoDB 聚合查询详解
    目录聚合管道管道阶段常见操作更多操作 - 投影更多操作 - 展开更多操作 - 分组更多操作 - 入库条件组累加器算术运算最值运算数组提取其他运算聚合管道 聚合框架是 MongoDB 中的一组分析工具,可以对一个或多个集合...
    99+
    2022-12-26
    MongoDB聚合查询 mongodb聚合查询性能 mongodb聚合查询优化
  • MySQL详解如何优化查询条件
    目录前言现状问题一多表联查单表查询结论问题二多表联查单表查询问题如何解决前言 技术能解决的事情改技术 技术解决不了的事情该需求 现状 假设我们目前有两张表 业务表 书( t_a_bo...
    99+
    2024-04-02
  • MongoDB数据库条件查询技巧总结
    目录前言连接数据库查看数据仓库查看数据库表查看数据表内容查询方式总结前言 今天不讨论使用自带 UI 界面的连接工具,仅讨论使用命令行查询 MongoDB 数据库的情况。在排查问题的时...
    99+
    2024-04-02
  • mongodb多条件查询性能怎么优化
    要优化MongoDB多条件查询的性能,可以考虑以下几个方面: 创建合适的索引:在MongoDB中,索引是提高查询性能的关键。为多...
    99+
    2024-04-10
    mongodb
  • MongoDB 查询操作的实例详解
    MongoDB 查询操作的实例详解 使用find或findOne进行查询。并可以进行范围查询、数据集查询、不等式查询,以及其他的一些查询。 查询将会返回DBcursor 游标只有在你需要的时候返回文档 ...
    99+
    2024-04-02
  • MongoDB实现查询、分页和排序操作以及游标的使用
    一、Find查询 事前准备:插入如下数据 db.Students.insert([ { _id:1, name:"Zhao", age:25, country:"USA", books:["js","C++","EXT...
    99+
    2022-07-08
    MongoDB 查询操作 分页操作 排序操作 游标用法
  • 详解Spring Data JPA动态条件查询的写法
    我们在使用SpringData JPA框架时,进行条件查询,如果是固定条件的查询,我们可以使用符合框架规则的自定义方法以及@Query注解实现。如果是查询条件是动态的,框架也提供了查询接口。JpaSpecificationExecutor...
    99+
    2023-05-31
    spring data jpa
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作