首页 > 代码库 > MongoDB--操作符
MongoDB--操作符
- $gt -- >
- $lt -- <
- $gte -- >=
- $lte -- <=
- $all 与 in 类似,不同的是必须满足[]内所有的值
- $exists 字段是否存在 db.sun.find({"age":{"$exists":true}}) 查询存在age字段的数据,null 字段值为null和不存在查询字段的数据都会列出来 ,只查询值null的数据 db.sun.find({"age":{"$in":[null],"$exists":true}}) 存在这个字段并且值为null
- $mod 取模运算(等同于C# %取余运算 10%3==1 ) db.sun.find({"age":{$mod:[10,0]}}) 字段对10取模等于0的数据
- $ne 不等于 db.sun.find({"age":{"$ne":10}}) 查询age字段不等于10的字段
- $in 包含操作,等同于SQL 的in操作 db.sun.find({"name":{"$in":["sun","2","sunxueyang"]}})
- $nin 不包含操作,等同于SQL not in 操作 db.sun.find({"name":{"$nin":["sun","2","sunxueyang"]}})
- $size 长度判断。 db.sun.find({"like":{"$size":2}}) 获取like数组长度是2的数据
- /正则表达式/ 查询可以直接使用正则去处理 ,sun/=sun% /sun/=%sun% /sun=%sun
- $where 可以传入查询条件执行。 db.sun.find({"$where":"this.age>1"}) this在执行时代表当前行数据
- count() 获取查询数量
- skip(10) 取第10条往后的数据
- limit(5) 取查询出来的5条件 等同于top 5 ,与skip组合就可以变成分页查询,db.sun.find().skip(10).limit(10) 如果每页10条,这就是取的第2页数据,db.sun.find().skip((2-1)*N).limit(N).sort(field:1) 排序,当数据量比较大的时候,性能会比较低,建议采用,创建一个自增字段,分页时计算自增字段的最小数字,然后使用limit
- sort() 排序函数 sort({age:1,name:-1}) 组合排序,根据age正序,根据name倒序,注意:如果正序排时,字段不存在的数据排在前面
- 相同属性,值类型不同时,排序顺序为:
最小值
null
数字(整形、长整型、双精度)
字符串
对象、文档
数组
二进制数据
对象ID
布尔型
日期型
时间戳
正则表达式
最大值
- distinct() 对指定字段进行去重 db.runCommand({"distinct":"表名","key":"指定列"}) 等同于 db.sun.distinct("name")
- group() 分组
db.gtb.group({ key:{age:1}, cond:{age:{$gt:2}}, reduce:function(){}, initial:{} }) 等同于 select age,count(1) from gtb group by age db.posts.group({ "key" : {"day" : true}, //根据key分组,结果显示key "initial" : {"tags" : {}}, //初始化展示的tags文档对象 "$reduce" : function (doc, prev) { //doc为当前行对象,prev为initial构建的对象 for (i in doc.tags) { //遍历当前行的tags数组 if (doc.tags[i] in prev.tags) { //如果当前行tags数组里面的数据存在于构建显示的对象里面,则进行统计+1,否则初始化为1 //“prev”则代表“累加器文档”的累加状态 prev.tags[doc.tags[i]]++; } else { prev.tags[doc.tags[i]] = 1; } } }, "finalize":function(prev){ //针对每次reduce结束之后,对累加器文档进行操作 for(i in prev.tags) //保留当前累加器大于2的数据 { if(prev.tags[i]<2) { delete prev.tags[i]; } } } }) 等同于,先根据day时间分组,然后对分组之后得tags数组之内的内容进行统计,
- next() 游标操作
var cur =db.posts.find(); //当前为查询集合对象 while(cur.hasNext()){ print(cur.next()) //表示打印当前游标对象 } 等同于 cur.forEach(function(itm){print( itm )}) ,不同点为cur.next()是对象实体, itm 为对象引用
-
find() 查询, find查询 在以对象形式出现的时候,并没有第一时间进行查询,而是等待真正查询时才去进行检索。例如:
var res=db.posts.find() //当前并未真正执行查询 res.hasNext() //此时才真正出发查询
MongoDB--操作符
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。