zoukankan      html  css  js  c++  java
  • MongoDB查询操作

    按条件查询

    比较操作:$lt,$lte,$gt,$gte,$ne

    db.user.find({"score":{$gt:80}});

    $or :包含多个条件,他们之间为or的关系 ,$nor相当于or取反

    db.user.find({$or:[{"score":{$gt:80}},{"user_id":"u3"}]});

    $not:用作其他条件之上,取反

    $mod:将查询的值除以第一个给定的值,如果余数等于等二个值则匹配成功

    db.user.find({"score":{$mod:[4,1]}});

    $in :查询一个键的多个值,只要键匹配其中一个即可 , $nin为不包含

    db.user.find({"score":{$in:[70,80]}});

    $all键需要匹配所有的值

    db.user.find({"house":{$all:[90]}});

    $exists:检查某个键是否存在,1表示存在,0表示不存在

    db.user.find({"name":{$exists:1}});

    null类型:不仅能匹配键的值为null,还匹配键不存在的情况

    db.user.find({"name":null});

    查询数组

    单个元素匹配,就跟前面写条件一样,{key:value}

     db.user.find({"house":80});

    多个元素匹配,使用$all, {key:{$all:[a,b]}},元素的顺序无所谓

    db.user.find({"house":{$all:[80,120]}});

    可以使用索引指定查询数组特定位置, {“key.索引号”:value}

     db.user.find({"house.1":120});

    查询某个长度的数组,使用$size

    db.user.find({"house":{$size:2}});

    指定子集,使用$slice,正数是前面多少条,负数是尾部多少条,也可以指定偏移量和要返回的元素数量,比如:$slice:[50,10]

    db.user.find({"house":{$exists:1}},{"house":{$slice:[0,2]}});

    可以使用$来指定符合条件的任意一个数组元素,如:{”users.$”:1}

     db.user.find({"house":{$exists:1}},{"house.$":1});

    $elemMatch:要求同时使用多个条件语句来对一个数组元素进行比较判断

    db.user.find({"house":{$elemMatch:{$gte:80,$lt:90}}});

    查询记录条数的命令:count

    db.user.find().count();

    如果要获取按条件查询后记录的条数,需要指定count(true或者非0的数)

    • 限制返回的记录条数的命令:limit(要返回的条数)
    • 限制返回的记录条数起点的命令:skip(从第几条开始返回)
    • 排序的命令:sort({要排序的字段:1为升序,-1为降序})
    db.user.find({}).limit(2).count(1);

    db.user.find({}).skip(1).limit(2);

     db.user.find({}).sort({"score":1});

    分页查询:组合使用limit,skipt和sort
    当然也可以使用其他方式来分页,比如采用自定义的id,然后根据id来分页


    查询给定键的所有不重复的数据,命令:distinct
    语法:db.runCommand({“distinct”:集合名,“key”:”获得不重复数据的字段”});

     db.runCommand({"distinct":"user","key":"user_id"});

    存储过程
    MongoDB的存储过程其实就是个自定义的js函数
    使用db.system.js.save({“_id”:名称,value:函数});

    var totalF=function (a,b){ return a+b ;};
    
    db.system.js.save({"_id":"myF","value":totalF});

    可以通过如下命令查看:db.system.js.find();
    可以通过如下命令调用:db.eval(名称)

    db.eval("myF(1,3)");
  • 相关阅读:
    python中的编码问题
    CVPR2018 Tutorial 之 Visual Recognition and Beyond
    hdu 1376 Octal Fractions
    hdu 1329 Hanoi Tower Troubles Again!
    hdu 1309 Loansome Car Buyer
    hdu 1333 Smith Numbers
    hdu 1288 Hat's Tea
    hdu 1284 钱币兑换问题
    hdu 1275 两车追及或相遇问题
    hdu 1270 小希的数表
  • 原文地址:https://www.cnblogs.com/xiaoliangup/p/9452834.html
Copyright © 2011-2022 走看看