• 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中的list,tuple,dict,set
    linux上发布网站遇到的问题
    asp.net通过配置文件设置默认页
    半自动安装 linux 系统
    redis整合spring
    redis介绍。
    DAC模式登陆(解决对象名'sys.sysobjvalues'无效)
    对存储过程进行加密和解密(SQL 2008/SQL 2012)
    UML 系列
    Redis学习笔记~目录
  • 原文地址:https://www.cnblogs.com/xiaoliangup/p/9452834.html
Copyright © 2020-2023  润新知