MongoDB查询操作
Posted 小亮的BLOG
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)");
以上是关于MongoDB查询操作的主要内容,如果未能解决你的问题,请参考以下文章
php操作mongoDB数据库查询的时候怎样写“或”这样的多个条件查询代码?
如何创建一个查询来查找 2 个数字之间的值,这些数字是 MongoDB 中的字符串类型
100天精通Python(进阶篇)——第40天:pymongo操作MongoDB数据库基础+代码实战