zoukankan      html  css  js  c++  java
  • Mongo简单查询总结

    mongo 简单查询
    db.ansheng.findOne()//返回第一条匹配到的数据
    db.ansheng.findOne({"aaaaa":4})
    db.ansheng.find()//最简单的查询
    db.ansheng.find({"aaaaa":2})//返回匹配到的数据
    db.ansheng.find({"aaaaa":2}).limit(1)//根据查询条件(find)返回指定条数(limit)的数据
    db.ansheng.find({"aaaaa":2}).skip(1).limit(1);//根据查询条件(find)命中N条数据,跳过前(skip)条数据,返回(limit)条数据
    db.ansheng.find({"aaaaa":2}, "book":["在绝望中寻找希望"])
    db.ansheng1.find({aaa:123, bbb:3211})//多个查询语句


    返回指定的键
    有时并不需要把文档中所有的键/值对都返回,这时候可以用find的第二个参数来返回指定的键
    db.ansheng.find({},{aaaaa:1, list:1})
    db.ansheng.findOne({},{aaaaa:1, list:1})
    默认下_id总是被返回的,这时候可以使用第二个参数剔除掉他
    db.ansheng.find({},{_id:0,aaaaa:1})
    db.ansheng.find({},{_id:0})//如果只输入 0 的话,别的参数会全部返回


    指定范围的查询
    查询中我们经常会遇到大于多少
    "$lt"、"$lte"、"$gt"、"$gte"分别对应
    <         <=    >    >=

    db.ansheng.find({"aaaaa":{"$lt":6,"$gt":3}})
    aaaaa 大于3 小于6 的数据

    db.ansheng.find({AddTime:{"$lt":new Date("05/05/2016")}})
    时间类型的判断

      

    in

    日常查询中我们我们经常会遇到,根据一组ID或者别的数据进行查询,这个时候我们就需要使用$in这个查询器了

    db.ansheng.find({aaaaa:{"$in":[2,3,4]}})

    nin

    $nin是和in相对应的,nin是返回与数组中都不匹配的数据

    db.ansheng.find({aaaaa:{"$nin":[2,3,4]}})

    or

    or是或者的意思,只要满足 aaaaa = 3或者 flag = true两个任何一个条件,这条数据就会返回

    db.ansheng.find({"$or":[{aaaaa:3},{flag:true}]})

    nor

    $nor 和 or 的意思正好相反 返回不满足指定条件的数据

    db.ansheng.find({"$nor":[{aaaaa:3},{flag:true}]})  

    and

    返回满足多个指定条件的数据

    db.ansheng.find({"$and":[{aaaaa:2},{flag:true}]})

    mod

    $mod 是一个取模运算符,他会把查询的值除以第一个给定值,诺余数等于第二个给定值则匹配成功

    db.ansheng.find({"aaaaa":{"$mod":[2,1]}}) 返回了 5、7、3  三条数据都满足除以2余1的条件

    not

    db.ansheng.find({"aaaaa":{"$not":{"$mod":[2,1]}}}) 上面的mod返回了  5、7、3 ,这个就返回除了  5、7、3 以外的数据

    特定类型的查询

    null

    null类型有点奇怪

    { "_id" : ObjectId("572ab6c9734e0336c344e8b4"), "q" : 0 }
    { "_id" : ObjectId("572ab6c9734e0336c344e8b5"), "q" : 1 }
    { "_id" : ObjectId("572ab6c9734e0336c344e8b6"), "q" : 2 }
    { "_id" : ObjectId("572ab6c9734e0336c344e8b7"), "q" : 3 }
    { "_id" : ObjectId("572ab6c9734e0336c344e8b8"), "q" : 4 }
    { "_id" : ObjectId("572ab6c9734e0336c344e8b9"), "q" : 5 }
    { "_id" : ObjectId("572ab6c9734e0336c344e8ba"), "q" : null }
    { "_id" : ObjectId("572ab6c9734e0336c344e8bb"), "q" : null }
    { "_id" : ObjectId("572ab6c9734e0336c344e8bc"), "q" : null }
    { "_id" : ObjectId("572ab6c9734e0336c344e8bd"), "q" : null }
    { "_id" : ObjectId("572ab6c9734e0336c344e8be"), "q" : null }

    由上面一个文档在这个文档中 前6条数据 q 都不为null

    后5条数据q = null

    db.ansheng2.find({q:null}) //这种方式确实可以匹配到 后面5条数据
    db.ansheng2.find({qq:null})  //但是这种方式就有问题了他匹配到了全部的数据

    db.ansheng2.find({qq:{"$in":[null],"$exists":true}}) 使用了 exists 就可以匹配成功了  0 条数据

    更新中

  • 相关阅读:
    Intersection of Two Linked Lists
    Tools:实现vmware虚拟机开机自启动
    Tools:实现ping操作带时间戳【windows+linux】
    Django:学习笔记
    Python:笔记2
    Python:笔记1_字符串处理【转载】
    Pycharm:使用笔记
    python:win下将py文件打包成exe
    python:选房抽签小工具
    RF:操作笔记
  • 原文地址:https://www.cnblogs.com/ansheng/p/5459191.html
Copyright © 2011-2022 走看看