• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解MongoDB的条件查询和排序

    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}}:

    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的条件查询和排序的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • springboot实现将自定义日志格式存储到mongodb中
    • 常用的MongoDB查询语句的示例代码
    • mongodb中oplog介绍和格式详析
    • SpringBoot整合之SpringBoot整合MongoDB的详细步骤
    • MongoDB安装使用并实现Python操作数据库
    • 浅析MongoDB之安全认证
    • SpringBoot整合MongoDB的实现步骤
    • mongodb的安装和开机自启动详细讲解
    上一篇:分析MongoDB和MySQL各自的关键特性、差别和优势
    下一篇:SpringBoot整合MongoDB的实现步骤
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解MongoDB的条件查询和排序 详解,MongoDB,的,条件,查询,