一:简单查询

  • db.collection.find(query, projection)
    - query :可选,使用查询操作符指定查询条件
    - projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
  • 查询时使用 .pretty() 可以使代码格式化显示,类似于 \G
  • find() 语句不加 QUERY 条件时,默认查询集合文档,默认显示20条
  • 如果只想找到一条记录,请使用 findOne()
    > db.demo.findOne({"name":"lisi"})
    {
    "_id" : ObjectId("5c6158fa2f5e0916de3c790e"),
    "name" : "lisi",
    "age" : 26
    }
  • projection 可以选择字段是否展示 1为展示/0不展示
    find()/findOne()同理 > db.demo.findOne({"name":"lisi"}, {"_id":0,"name":1})
    { "name" : "lisi" }

二:查询条件查询

  • 适用的查询条件有

    • $lt    小于
    • $lte  小于等于
    • $gt   大于
    • $gte 大于等于
  • 找到 年龄(age) 小于30 大于25的文档
    > db.demo.find({"age" : {"$lt" : 30, "$gt" : 25}})
    { "_id" : ObjectId("5c6158eb2f5e0916de3c790c"), "name" : "zhangsan", "age" : 26 }
    { "_id" : ObjectId("5c6158fa2f5e0916de3c790d"), "name" : "zhangsan", "age" : 26 }
    { "_id" : ObjectId("5c6158fa2f5e0916de3c790e"), "name" : "lisi", "age" : 26 }
    { "_id" : ObjectId("5c61590f2f5e0916de3c790f"), "name" : "zhangsan", "age" : 26 }
    { "_id" : ObjectId("5c61590f2f5e0916de3c7910"), "name" : "lisi", "age" : 26 }

三:OR 查询

  • $in 可以查询一个键的多个值
  • > db.demo.find({"age" : {"$in":[20,26]}})
    { "_id" : ObjectId("5c613f942f5e0916de3c7909"), "age" : 20 }
    { "_id" : ObjectId("5c6158eb2f5e0916de3c790c"), "name" : "zhangsan", "age" : 26 }
    { "_id" : ObjectId("5c6158fa2f5e0916de3c790d"), "name" : "zhangsan", "age" : 26 }
    { "_id" : ObjectId("5c6158fa2f5e0916de3c790e"), "name" : "lisi", "age" : 26 }
    { "_id" : ObjectId("5c61590f2f5e0916de3c790f"), "name" : "zhangsan", "age" : 26 }
    { "_id" : ObjectId("5c61590f2f5e0916de3c7910"), "name" : "lisi", "age" : 26 }
  • OR 更通用,可以查询更多的条件
  • > db.demo.find({"$or" : [{"age" : 20}, {"name":"lihong"}]})
    { "_id" : ObjectId("5c613f942f5e0916de3c7909"), "age" : 20 }
    { "_id" : ObjectId("5c61587a2f5e0916de3c790b"), "name" : "lihong", "age" : 25 }

四:null 查询

  • null 的匹配是有些奇怪,不仅仅会匹配某个键为null的文档,还会匹配不包含这个键的文档
  • > db.demo.find({"age" : null})
    { "_id" : ObjectId("5c61011d0a485d689a5f3e15"), "c" : "d" }
    { "_id" : ObjectId("5c6147c92f5e0916de3c790a"), "age" : null }
  • 如果只是想匹配 null 的存在,还需要 使用 exists 来判断键值是否存在
  • db.demo.find({"age" : {"$in" : [null], "$exists" : true}})
    { "_id" : ObjectId("5c6147c92f5e0916de3c790a"), "age" : null }

五:数组

  • 数组的查询和标量的查询类似

    • 插入
      > db.demo.insert({"fruit" : ["banana", "apple", "origin"]});
      WriteResult({ "nInserted" : 1 })
    • 查询
      > db.demo.find({"fruit" : "apple"})
      { "_id" : ObjectId("5c6259632f5e0916de3c7912"), "fruit" : [ "banana", "apple", "origin" ] }
  • 匹配多个元素的数组
    • > db.demo.find({"fruit" : {$all :["banana", "apple"]}});
      { "_id" : ObjectId("5c6259632f5e0916de3c7912"), "fruit" : [ "banana", "apple", "origin" ] }
      { "_id" : ObjectId("5c6259de2f5e0916de3c7913"), "fruit" : [ "banana", "apple" ] }
  • 根据数组长度匹配
    • > db.demo.find({"fruit" : {$size : 3}});
      { "_id" : ObjectId("5c6259632f5e0916de3c7912"), "fruit" : [ "banana", "apple", "origin" ] }

六:查询内嵌文档

七:$where 查询

  • 避免使用,英文在查询时需要把文档从 BSON 转为 Javascript 对象操作

八:limit/skip/sort

  • limit

    • limit 指定为上限
    • db.demo.find().limit(3);
  • skip
    • 跳过前 n 个匹配的文档
    • 一次略过过多会导致性能问题,用排序或者其他方法解决
    • db.demo.find().skip(3);
  • sort
    • 接受一对键值对作为排序,1升序/-1降序,如果指定多个键,则按照顺序进行排序
    • > db.demo.find().sort({"age": -1, "name":1});
      { "_id" : ObjectId("5c6158fa2f5e0916de3c790e"), "name" : "lisi", "age" : 26 }
      { "_id" : ObjectId("5c61587a2f5e0916de3c790b"), "name" : "lihong", "age" : 25 }
      { "_id" : ObjectId("5c613f942f5e0916de3c7909"), "age" : 20 }
    • 对于混合数据的比较,由大到小

《mongoDB》查询的更多相关文章

  1. MongoDB查询转对象是出错Element '_id' does not match any field or property of class

    MongoDB查询转对象是出错Element '_id' does not match any field or property of class   解决方法: 1.在实体类加:[BsonIgno ...

  2. MongoDB查询操作限制返回字段的方法

    这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下   映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...

  3. mongodb查询文档

    说到查询,我们一般就想起了关系型数据库的查询了,比如:order by(排序).limit(分页).范围查询(大于某个值,小于某个值..,in查询,on查询,like查询等待很多),同样mongodb ...

  4. [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“

    mongodb 查询条件   这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte" ...

  5. Mongodb查询的用法,备注防止忘记

    最近在用这个东西,为防止忘记,记下来. 集合简单查询方法 mongodb语法:db.collection.find()  //collection就是集合的名称,这个可以自己进行创建. 对比sql语句 ...

  6. mongodb查询关于大于小于的用法;

    mongoDB查询操作符: http://www.runoob.com/mongodb/mongodb-operators.html 项目中需要的场景是这样的,每个人每天只能领取一张明信片,换句话说, ...

  7. MongoDB查询分析

    MongoDB 查询分析可以确保我们建立的索引是否有效,是查询语句性能分析的重要工具.MongoDB 查询分析常用函数有:explain() 和 hint(). 1. explain(): 提供查询信 ...

  8. 【mongodb系统学习之十】mongodb查询(一)

    十.mongodb查询:find ;查询时条件中不能引用文档中其他键的值: 1).查询数据库全部数据:语法db.collectionName.find();默认只显示前20条,如图: 2).按条件查询 ...

  9. MongoDb进阶实践之三 MongoDB查询命令详述

    一.引言           上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命 ...

  10. MongoDb进阶实践之六 MongoDB查询命令详述(补充)

    一.引言         上一篇文章我们已经介绍了MongoDB数据库的查询操作,但是并没有介绍全,随着自己的学习的深入,对查询又有了新的东西,决定补充进来.如果大家想看上一篇有关MongoDB查询的 ...

随机推荐

  1. js计算字符串的字节数和字符串与二进制的相互转化

    一.js计算字符串的字节数方法: //blob获取字符串的字节 var debug = "好的"; var blob = new Blob([debug],{type : 'tex ...

  2. Python3实现Win10桌面背景自动切换

    [本文出自天外归云的博客园] 得空写了个自动切换桌面背景图片的小程序.再不写python就要扔键盘了,对vue还有那么一点好感,天天php真是有够烦. 准备工作 准备个文件夹放在桌面上,平时看到什么高 ...

  3. ThinkPad T420 Fn+F5

    关于F5,可做如下设置:     1)官网win7系统下载SIhotkey[8jvu39ww].exe:最新版本的我没测试,应该也可以用.     2)双击安装,并按程序安装,直到要你选择安装on s ...

  4. 【emWin】例程十五:触摸校准实例——五点校准法

    介绍: 该例程介绍如何校准4.3寸.7寸液晶显示屏.校准方法如下: 1.进入以下界面,用户可选择是否进入校准界面进行液晶校准 *点击屏幕任何地方可进入校准界面 *不采取任何操作,几秒钟后会进入触摸测试 ...

  5. Paypal Rest Api自定义物流地址(跳过填写物流地址)

    PayPal之前的Rest Api是不支持自定义物流地址的,最新升级版本的提供了这个服务(Payment Experience),大概步骤如下: 1.申请一个自定义的配置ID 自定义配置包括Logo, ...

  6. python笔记2-数据类型:列表[List]常用操作

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,索引从0开始,依此类推. 序列都可以进行的操作:包括 索引,切片,加,乘,检查成员. 列表是最常用的Pyth ...

  7. What exactly can you do with Python? Here are Python’s 3 main applications._你能用Python做什么?下面是Python的3个主要应用程序。

    原文链接 Github地址 一.陈述 1,我到底能用Python做什么? 我观察注意到Python三个主要流行的应用: 网站开发: 数据科学——包括机器学习,数据分析和数据可视化: 做脚本语言. 二. ...

  8. cookie是如何保存到客户端,又是如何发送到服务端

    Cookie相关的Http头     有 两个Http头部和Cookie有关:Set-Cookie和Cookie.     Set-Cookie由服务器发送,它包含在响应请求的头部中.它用于在客户端创 ...

  9. [Object Tracking] **Mask R-CNN

    From: 如何评价 Kaiming He 最新的 Mask R-CNN? 如何跟进这些人,是个能力,要慢慢掌握. https://github.com/CharlesShang/FastMaskRC ...

  10. [Bayes] KL Divergence & Evidence Lower Bound

    L lower是什么? L lower, 既然大于,那么多出来的这部分是什么?如下推导: 得出了KL的概念,同时也自然地引出了latent variable q.