前面我们简单的讲了下find方法,下面来深入的过一下它的用法以及常用的字方法。

下面是mongo中db.user.help()中对find方法的定义和解释:

db.user.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return.
e.g. db.user.find( {x:77} , {name:1, x:1} )

其中fields参数的意图是要显示/不显示的字段列表,不赋值则返回全部字段(_id字段默认返回)。

其中key:flag(0/1)中flag==1表示该字段返回,除了_id字段外,指定的其他字段的flag值必须都一样

例:

/**
查找age==28的记录的_id,name,sex
**/
db.user.find({age:28},{name:1,sex:1})
/**
该查询会报错,因为age必须为1,为0的话其实就不需要写
**/
db.user.find({age:28},{name:1,sex:1,age:0})
/**
查找age==28的记录的name和sex,_id字段不需要返回
**/
db.user.find({age:28},{name:1,sex:1,_id:0})

在数据库的where查询中的比较操作符常用有如下2类:

①: >, >=, <, <=, !=, =。

②:and,or,in,not in

在mongodb中也提供了对这些常用操作符的支持,

1、"$gt", "$gte", "$lt", "$lte", "$ne"对应了>, >=, <, <=, !=,上面的=没有特殊关键字,直接使用key:value即可。

2、 "$or", "$in","$nin"对应了or,in,not in,上面的and没有特殊关键字,直接使用逗号分隔的就是and。

/**
查询age>30的用户
**/
db.user.find({age:{$gt:30}})
/**
查询age<15的用户
**/
db.user.find({age:{$lt:15}})
/**
查询name in ("haha","hehe","jingli")的用户
**/
db.user.find({name:{$in:["haha","hehe","jingli"]}})
/**
查询 name in ("haha","hehe","jingli") and (age<15 or age>30)的用户
**/
db.user.find({name:{$in:["haha","hehe","jingli"]},$or:[{age:{$lt:15}},{age:{$gt:30}}]})

3、使用正则表达式查询

/**
查询名字以h开头的用户
**/
db.user.find({name:/^h/})

4、使用$where来自定义JS的Function来匹配

/**
查询age>30 || age<10的用户
**/
db.user.find({$where:function(){return this.age>30 || this.age<10}})

Mongodb查询命令详解的更多相关文章

  1. ELK查询命令详解

    目录 ELK查询命令详解 倒排索引 使用ElasticSearch API 实现CRUD 批量获取文档 使用Bulk API 实现批量操作 版本控制 什么是Mapping? 基本查询(Query查询) ...

  2. ELK查询命令详解总结

    目录 ELK查询命令详解 倒排索引 倒排索引原理 分词器介绍及内置分词器 使用ElasticSearch API 实现CRUD 批量获取文档 使用Bulk API 实现批量操作 版本控制 什么是Map ...

  3. mongoDB group命令详解

    http://heipark.iteye.com/blog/1167948       http://rjhym.iteye.com/blog/1224200 http://blog.163.com/ ...

  4. MongoDB各种查询操作详解

    这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下   一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...

  5. Linux系统诊断必备技能之二:日志查询常用命令详解

    一.概述 日常运维工作中,排查线上环境问题,少不了去线上查日志.而使用什么命令,能快速准确地查到我们需要查找地日志信息,也是我们需要掌握的一项技能.下面介绍一下日常工作常用到的查看日志命令:tail, ...

  6. windows/NBTSTAT,linux/nmblookup命令详解,查询NetBIOS名

    NBTSTAT命令详解 请问: Linux下有没有和nbtstat一样的命令,用 nmblookup -A ip 可以 nbstat命令主要用于查看当前基于netbios的tcp/ip连接状态,通过该 ...

  7. MongoDb进阶实践之三 MongoDB查询命令详述

    一.引言           上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命 ...

  8. MongoDb进阶实践之六 MongoDB查询命令详述(补充)

    一.引言         上一篇文章我们已经介绍了MongoDB数据库的查询操作,但是并没有介绍全,随着自己的学习的深入,对查询又有了新的东西,决定补充进来.如果大家想看上一篇有关MongoDB查询的 ...

  9. MongoDb进阶实践之四 MongoDB查询命令详述

    一.引言 上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命名和删除.有了这些基 ...

随机推荐

  1. Angular2学习(一)

    Angular2的新特性: angular2的核心: 模块.组件.元数据.模板.数据绑定.服务.指令.依赖注入.模块. 组件:层层嵌套,形成组件树.父子组件沟通有输入和输出接口 组件包含JavaScr ...

  2. bzoj2654

    题解: 老早看的并没有写 wqs二分的原理和这个凸函数的性质已经证明过了 写的时候 主要的问题在于每次的答案是一个范围 什么意思呢 其实比较简单的做法是 优先取白边,优先取黑边做两次 然后看一下要求的 ...

  3. python常用内建模块--base64

    Base64是一种任意二进制到文本字符串的编码方法,常用于在URL.Cookie.网页中传输少量二进制数据. import base64 a = 'abcdef/+'b= base64.b64enco ...

  4. 【Java】 剑指offer(61) 扑克牌的顺子

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连 ...

  5. 019 mapreduce的核心--shuffle理解,以及在shuffle中的优化

    关于shuffle的过程图. 一:概述shuffle Shuffle是mapreduce的核心,链接map与reduce的中间过程. Mapp负责过滤分发,而reduce则是归并整理,从mapp输出到 ...

  6. def 函数的不定长函数

    *args 不定长函数传值可直接传,也可以拆包传,参数默认为元组: 参数为字典的时候:

  7. UVA - 11149 (矩阵快速幂+倍增法)

    第一道矩阵快速幂的题:模板题: #include<stack> #include<queue> #include<cmath> #include<cstdio ...

  8. 18,EasyNetQ-使用替代DI容器

    EasyNetQ由独立组件组成. 它在内部使用称为DefaultServiceProvider的小型内部DI(IoC)容器. 如果您查看用于创建核心IBus接口实例的静态RabbitHutch类的代码 ...

  9. 查找最大或最小的 N 个元素

    使用内置的heapd模块 In [1]: import heapq In [2]: nums = [1,8, 2, 23, 7, -4, 18, 23, 42, 37, 2] In [3]: prin ...

  10. bzoj5312: 冒险(势能均摊线段树)

    题目链接 BZOJ5312: 冒险 题解 如果一次操作对区间& 和 区间| 产生的影响是相同的,那么该操作对整个区间的影响都是相同的 对于每次操作,在某些位上的值,对于整个区间影响是相同的,对 ...