• $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--操作符的更多相关文章

  1. MongoDB操作符之$elemMatch

    问题 如果MongoDB 数据库集合中仅存在一条记录 { "_id" : ObjectId("5e6b4ef546b5f44e5c5b276d"), " ...

  2. mongodb操作符

    1."$gt" ."$gte". "$lt". "$lte"."null查询"."$all ...

  3. MongoDB $type条件操作符

    描述 在本章节中,我们将继续讨论MongoDB中条件操作符 $type. $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. MongoDB 中可以使用的类型如下表所示: 类型 ...

  4. MongoDB 学习笔记(8)---$type 操作符

    $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. MongoDB 中可以使用的类型如下表所示: 类型 数字 备注 Double 1   String 2   Object 3 ...

  5. MongoDB $type 操作符

    描述 $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. MongoDB 中可以使用的类型如下表所示: 类型 数字 备注 Double 1 String 2 Object 3 ...

  6. MongoDB学习笔记——聚合操作之group,distinct,count

    单独的聚合命令(group,distinct,count) 单独聚合命令 比aggregate性能低,比Map-reduce灵活度低:但是可以节省几行javascript代码,后面那句话我自己加的,哈 ...

  7. MongoDB学习笔记——文档操作之查询

    查询文档 使用db.COLLECTION_NAME.findOne()可以查询所有满足条件的第一条数据 预发格式如下: db.COLLECTION_NAME.findOne(<query> ...

  8. kityminder-editor + MongoDB 思维导图数据自动实时保存方案

    最近开始做自己的第一个开源项目:一个基于思维导图的测试用例管理系统MinderCase,在做了一周的技术调研后,决定采用kityminder-editor作为思维导图编辑器,为了支持实时存储,当思维导 ...

  9. mongodb的学习-6-命令简单使用

    1.创建数据库 use DATABASE_NAME 举例说明: > use another //创建了数据库another switched to db another > db anot ...

  10. mongodb基本使用(四)

    MongoDB 条件操作符 描述 条件操作符用于比较两个表达式并从mongoDB集合中获取数据. MongoDB中条件操作符有: (>) 大于 - $gt (<) 小于 - $lt (&g ...

随机推荐

  1. JavaScript高级程序设计 第三章 基本概念

    ch3 基本概念 标签(空格分隔): JavaScript 语法 标识符 - 第一个字符必须是字母.下划线或美元 - 驼峰大小写格式 严格模式 ECMAScript5引入,定义了一种解析和执行模型.此 ...

  2. 数据库之Oracle(一)

    前段时间项目中需要做数据管理和迁移的工作,于是又重新拾起了数据库,在javaEE阶段,我们对于数据库的使用仅限于DML(insert,update,delete,select).数据库的使用也比较狭隘 ...

  3. 观察者模式(Observer)发布、订阅模式

    观察者模式定义了对象之间一对多的依赖关系,这样一来,当一个对象改变时,他的所有依赖者都会收到通知并自动更新.   模式中的角色 1.抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里 ...

  4. C# Redis学习系列三:Redis配置主从

    Redis配置主从 主IP :端口      192.168.0.103 6666 从IP:端口       192.168.0.108 3333 配置从库 (1)安装服务: redis-server ...

  5. 企业Centos服务器分区常用方案

    方案一: 一般公司生产环境,数据不是非常重要,集群架构中的一个节点服务器: /boot: 200M swap: 8G内存以下,1.5倍 8G内存以上,设置8G就够了 / : 剩下的所以存储空间 方案二 ...

  6. Gulp和webpack的区别,是一种工具吗?

    疑问:gulp和webpack 什么关系,是一种东西吗?可以只用gulp,不用webpack吗 或者反过来? 它们的区别和概念 ------------------------------------ ...

  7. LinkedBlockingDeque

    1.LinkedBlockingDeque public class LinkedBlockingDeque<E> extends AbstractQueue<E> imple ...

  8. ASP.NET Core实现类库项目读取配置文件

    前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...

  9. thinkphp中的钩子_什么是钩子?

    讲到插件,不得不讲钩子.首先,我们之前说明了插件是一个扩展的功能实现. 既然是扩展的,那么就要很灵活.可复用,并不是像我们之前开发项目,一个功能实现了,就写死在代码里了. 项目其他地方要用了,怎么办, ...

  10. jsp中的request.setAttribute的使用

    1.第一个jsp页面 <form id="form1" method="post" action="first.jsp"> &l ...