前面我们简单的讲了下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. Android 倒计时按钮,倒计时发送短信验证码…

    Android基础之——CountDownTimer类,轻松实现倒计时功能https://www.cnblogs.com/yfceshi/p/6853746.html android中获取验证码后出现 ...

  2. PAT 之 A+B和C

    时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard 题目描述 给定区间 [-2的31次方, 2的31次方] 内的3个整数 A.B 和 C,请判 ...

  3. hdu 1004 颜色与数字(map水题)

    Sample Input5 //Tgreenredblueredred 统计颜色的次数 输出最多的颜色3pinkorangepink0 Sample Outputred pink # include ...

  4. Arbitrage HDU1217

    汇率转换问题: 怎么样才能套利 可以用Floyd算法: #include<bits/stdc++.h> using namespace std; ][]; int main() { int ...

  5. 第八章| 3. MyAQL数据库|Navicat工具与pymysql模块 | 内置功能 | 索引原理

    1.Navicat工具与pymysql模块 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数 ...

  6. 070 关于HBase的概述

    1.hbase的特点 ->数据存储量可以达到亿级别数据维持在秒级 ->按列存储的数据库 ->能够存储上百万列 ->hbase的底层存储依赖于HDFS ->如何扩展hbas ...

  7. Laravel 5 插入数据后返回主键ID

    方法一: $info = DB::table('表名')->insertGetId(['imgName' => $fileName]);//图片名入库后返回添加数据行的主键ID 方法二:( ...

  8. js异步刷新局部页面

    真不想说博客园的Markdown编辑器,我发表到我的个人博客上多好看的一篇文章,发到博客园上格式就成这个鸟样了,哎,不发现到博客首页了,就个人存个档吧 最近在做一个异步刷新页面中的局部,这样做可以防出 ...

  9. vue+axios实现移动端图片上传

    在利用vue做一些H5页面时,或多或少会遇到有图片上传的操作,主要是运用html5里面的input[type=file]来实现,传递到后端的数据是以二进制的格式传递,所以上传图片的请求与普通的请求稍微 ...

  10. 线程、对称多处理和微内核(OS 笔记三)

    线程.对称多处理 ​ 这一部分继续深入探讨与进程管理相关的高级概念并了解多处理机的对称多处理技术. 进程和线程 到目前为止提出的进程的概念包含两个特点: 资源所有权 存放进程映像的虚拟地址空间 调度/ ...