MongoDB中使用find或findOne函数执行查询

find函数

db.c.find()--查询集合c所有

db.c.find({“name”:”zhangsan”})

注意:查询条件的值必须是常量,也就是说不能用变量

db.c.find({“name”:this.name})//这样是行不通的

查询条件

“$lt”对应<

“$lte”对应<=

“$gt”对应>

“$gte”对应>=

“$ne”对应!=

用法:

db.users.find({“age”:{“$gte”:18,”$lte”:30}})//查找年龄大于等于18小于等于30的用户

db.users.find({“name”:{“$ne”:”张全蛋”}})

OR查询

MongoDB中用两种方式来实现OR查询:

“$in”可以用来查询一个键的多个值,它非常灵活,可以指定不同类型的条件

“$nin”与”$in”作用相反

“$or”可以在多个贱种查询任意的给定值

用法:

db.users.find({“name”:{“$in“ [“王尼玛”,“张全蛋”]}})

db.users.find(“user_id”:{“$in”: [123456,”123456”]})//用户id键的数据类型发生变化时的查找

db.users.find({“name”:{“$or”: [“age”: {“$in”: [18,20,25]},{“gender”:1}]}})

$not

$not是元条件操作符,它可以用在任何其他条件之上。

db.users.find({“id_num”:{“$not”:{“$mod”: [5,1]}}}) //”$mod”是取模运算符

null类型

users集合有三条数据如下:

{“name”:王尼玛”,”age”:18}

{“name”:”张全蛋”,”age”:20}

{“name”:”唐马孺”,”age”:null}

其中“唐马儒”的age为null值

然后查询:db.users.find({“age”:null})

查出来的结果不仅有{“name”:”唐马孺”,”age”:null},其他的两条也会被查出。因为null不仅会匹配某个键值为null的文档,而且还会

匹配不包含这个键的文档。

如果仅想匹配键值为null的文档,那就要用到”$exists”

db.users.find({“age”:  [null],”$exists”:true})

正则表达式

db.users.find({“name”:/张./})

查询数组

db.food.insert({“fruit”: [“apple”,”banana”,”peach”]})

查询:

db.food.find({“fruit”: “banana”})

结果会匹配上面插入的文档

$all:用于查找匹配多个条件下的数组

例如,常见一个包含3个元素的集合:

db.food.insert({“fruit”: [“apple”,”banana”,”peach”]})

db.food.insert({“fruit”: [“apple”,”kumquat”,”orange”]})

db.food.insert({“fruit”: [“cherry”,”banana”,”apple”]})

要找到既有”apple”又有“banana”的文档:

db.food.find({fruit:{$all: [“apple”,”banana”]}})

结果会找出第1个和第3个文档

$size:用于查询特定长度的数组

db.food.find({“fruit”:{“$size”:3}})

按索引匹配:db.food.find({“fruit.2”:”peach”]})

$slice:用于分割find/findOne返回值的结果集,返回某个键匹配的数组元素的子集。

db.food.findOne({},{“fruit”:{“$slice”:2}})

db.food.findOne({},{“fruit”:{“$slice”:-2}})//从右向左

$elemMatch:要求MongoDb同时使用查询条件作用于同一个数组(默认情况下是多个条件作用于多个数组)

db.test.find({“x”:{“$elemMatch”:{“$gt”:10,”$lt”:20}}})

$where查询

$where用于任何查询,它可以执行任意Javascript。因此为了安全起见,应该严格限制或不使用$where。

db.food.find({“$where”:function(){

forvar current in this(){

    //todo

}

}})

使用$where查询时,速度上要比常规查询慢的多,因为它要把每个文档从BSON对象转换成Javascript对象。

limit、skip和sort

limit函数:用于限制查询结果的个数

db.food.find().limit(3) //只返回3个匹配的结果。要是匹配的结果不到3个,则返回匹配数量的结果。

skip函数:用于略过指定个数的文档

db.food.find().skip(1) //略过第1个文档,返回后两个

sort函数:对查询结果进行排序,1是升序,-1是降序

db.food.find().sort({“fruit”:1})

MongoDB学习笔记-查询的更多相关文章

  1. 【转】MongoDB学习笔记(查询)

    原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...

  2. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  3. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  4. MongoDB 学习笔记(原创)

    MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...

  5. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  6. MongoDB学习笔记(六)--复制集+sharding分片 && 总结

    复制集+sharding分片                                                               背景 主机 IP 服务及端口 Server A ...

  7. MongoDB学习笔记(五)--复制集 && sharding分片

    主从复制                                                                                       主从节点开启 主节 ...

  8. MongoDB学习笔记(四)--索引 && 性能优化

    索引                                                                                             基础索引 ...

  9. MongoDB学习笔记(二)--Capped集合 && GridFS存储文件

    Capped集合                                                            Capped集合的大小是固定的,如果空间都被用完了,新添加的对象 ...

随机推荐

  1. LSP遇到的问题

    无法打开网页,LSP必须安装在C:\windows 安装在这里比较好 c:\windows\system32

  2. MyEclipse简单设置

    1.设置   安装完MyEclipse后,先设置工作空间的编码. Window—preferences—General--workspace—选择UTF-8编码 创建HTML的文件后,如果不是UTF- ...

  3. VC与JavaScript交互(三) --- CWebPage类调用javascript函数(给js函数传参,并取得返回值)

    ①需要一个别人写好的类CWebPage,将其对于的两个文件WebPage.h和WebPage.cpp添加到工程中. ②添加WebBrowser控件,在视图/对话框类的头文件中#include &quo ...

  4. WP8_GestureListener实现列表向下滑动加载新数据

    利用GestureListener的OnDragCompleted事件,实现列表向下滑动时,加载新的数据: (不建议使用 Touch.FrameReported+=Touch_FrameReporte ...

  5. Loadrunner:安装LR11.0破解步骤及License

    破解步骤: 1.关闭LR相关程序 2.运行LicenseDelete程序,清除LR原来的License 3.将lm70.dll和mlr5lprg.dll这两个文件复制并粘贴到LR安装目录下的bin文件 ...

  6. CentOS 6.x 播放 mp3 音乐 —— 成功

    参考:http://blog.chinaunix.net/uid-14735472-id-3472898.html centos 6.x  添加 rpmforge 源--- CentOS 6.x 安装 ...

  7. javascript之delete操作符

    理解delete 理论 代码段的类型 执行上下文 活动对象 / 变量对象 属性的特性 内置属性与 DontDelete 未声明的赋值 Firebug的困惑 在eval中删除变量 浏览器兼容性 Geck ...

  8. 如何添加localizable.strings本地化

    1.在Supporting Files文件夹右键,NewFile… -> iOS -> Resources -> String Files,命名为Localizable.string ...

  9. Windows Phone 开发起步之旅之二 C#中的值类型和引用类型

    今天和大家分享下本人也说不清楚的一个C#基础知识,我说不清楚,所以我才想把它总结一下,以帮助我自己理解这个知识上的盲点,顺便也和同我一样不是很清楚的人一起学习下.  一说起来C#中的数据类型有哪些,大 ...

  10. ASP.NET MVC5 高级编程 第2章 控制器

    参考资料<ASP.NET MVC5 高级编程>第5版 第2章 控制器 控制器:响应用户的HTTP 请求,并将处理的信息返回给浏览器. 2.1 ASP.NET MVC 简介 MVC 模式中的 ...