MongoDB的find用法
0.查询符合条件数据的总条数 如:db.list名.find({条件}).count();
1.返回指定的键值:db.list.find({条件},{name:"任意值",age:任意值}); 结果就只会把 _id name age 三类键值返回,若不想要_id则需将_id:0显式的写到第二个键值集合中;
2.指定键的值的范围返回指定的键值:db.list.find({age:{$gte:4,$lte:25}},{name:"任意值",age:任意值,_id:0}); 过滤出年龄>=4且<=小于25的键值且只包含name age;
3.刨除指定键的某个值返回指定的键值:db.list.find({age:{$ne:14},{name:"1",age:2,_id:0}); 过滤掉年龄为14的那条记录且键值且只包含name age;
=======================================$in和$nin的过滤条件只能是数组==========================================
4.包含指定键的某些值返回指定的键值:db.list.find({age:{$in:[14,16], name:"a"},{name:"1",age:2,_id:0}); 结果仅剩name是a且年龄为14或16的记录且键值且只包含name age;
5.与4相反:db.list.find({age:{$nin:[14,16]},{name:"1",age:2,_id:0}); 结果过滤掉年龄为14和16的那些条记录且键值且只包含name age;
6.找出age大于16或者name为a或b的记录:db.list.find({$or:[{age:{$gte:16}},{name:{$in:["a","b"]}}],{name:"1",age:2,_id:0});
7.正则匹配name打字母为1的记录:db.list.find({name:"/a/b/n/",{name:"1",age:2,_id:0}); 结果仅仅保留name开头字母为a,b,c的记录且键值且只包含name age;
8.$not操作为原条件取反;
=======================================键所对应的值为数组类型的查询==========================================
9.查询list中一条数据的键所对应的值为数组类型时使用:db.list名.find({likes:{$all:["篮球","足球","排球"]}},{name:"1",age:2,_id:0});就可以匹配查询;
10.键所对应的值为数组类型时使用该数组的具体索引位置进行查询 如:db.list名.find({"likes.1":"篮球"});会过滤出likes索引为1的位置为"篮球"的记录且"likes.2"引号必写;
11.根据前两条内容,查询出likes数组的元素个数是3的数据使用$size进行匹配 如:db.list名.find({likes:{$size:3}}); 即可;
12.根据9,10条内容查询出likes数组的元素索引为1到2进行匹配 如:db.list名.find({name:"xxx"},{likes:{$slice:[1,3]},_id:0}); 结果likes只展示likes2~3的值;
13.源于上条操作,如果只想展示likes数组中的最后一个元素则直接将$slice:-1即可;
=======================================键所对应的值为数组对象的查询==========================================
14.键所对应的值为数组类型且数组中仍是对象 则使用:db.list名.find(likes:{$elemMatch:{"likes1":"1","likes1":"2"}});它会匹配出"likes1":"1"并且"likes1":"2"的结果;
=============================================分页查询=============================================
15.分页查询 如:db.list名.find({age:{$gt:30}},{_id:0,name:1}).limit(5).sort({age:1});这样就找到了符合条件的前5条数据并升序排列,并且仅展示name键值;
16.分页查询 如:db.list名.find({age:{$gt:30}},{_id:0,name:1}).limit(5).skip(6).sort({age:-1});这样就找到了符合条件的7~12条数据并降序排列,并且仅展示name键值;
17.当数据量较大的时候skip有性能问题,处理办法就是使用日期记录上次查询出最后一条记录的时间,然后使用limit(..)找到大于该时间的几条即可;
MongoDB的find用法的更多相关文章
- MongoDB高级查询用法大全
转载 http://blog.163.com/lgh_2002/blog/static/440175262012052116455/ 详见官方的手册: http://www.mongodb.org/d ...
- mongodb聚合管道用法
基本用法 db.collection.aggregate( [ { <stage> }, ... ] ) stage如下 名称 描述 $addFields 将新的字段添加到文档中,输出的文 ...
- mongoDB 特别指令用法
http://apluck.iteye.com/blog/1176160 a. 修改collection集合字段名 参见:http://www.mongodb.org/display/DOCS/U ...
- mongoDB 索引的用法
http://www.cnblogs.com/lipan/archive/2011/03/28/1997202.html MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的, ...
- mongoDB的基本用法
一.MongoDB初识 什么是MongoDB MongoDB是一个基于分布式文件存储的数据库.由c++语言编写.旨在为web应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库 ...
- mongodb 查询的用法
想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动.C#版的驱动貌似有很多种,如官方提供的samus. 实现思路大都类似.这里我们用官方提供的mongo-csharp-dri ...
- MongoDB数据库基本用法
show dbs:显示数据库列表 show collections:显示当前数据库中的集合(类似关系数据库中的表) show users:显示用户 use <db name>:切换当前 ...
- Mongodb查询的用法,备注防止忘记
最近在用这个东西,为防止忘记,记下来. 集合简单查询方法 mongodb语法:db.collection.find() //collection就是集合的名称,这个可以自己进行创建. 对比sql语句 ...
- MongoDB的一些用法(转藏)
MongoDB是目前工作中经常使用到的NoSQL数据库. 本博客只记录相关理论知识和技巧,涉及到实践的部分都会单开Blog来记录实践过程. ------------------------------ ...
- MongoDB的MapReduce用法及php示例代码
MongoDB虽然不像我们常用的mysql,sqlserver,oracle等关系型数据库有group by函数那样方便分组,但是MongoDB要实现分组也有3个办法: * Mongodb三种分组方式 ...
随机推荐
- 阿里云SDK手册之java SDK
进行阿里云sdk开发的前提是已经购买阿里云的相关服务才能调用阿里的相关接口进行开发.最近公司在做云管控的项目,于是进行下摘录总结. 一. 环境准备 阿里云针对不同的开发语言提供不同的sdk,由于项目用 ...
- 生产环境下一定要开启mysqlbinlog
在没有备份数据库的情况下,可以用binlog进行恢复 在生产环境下安全第一,损失一点点效率换来的安全还是值得的. http://www.cnblogs.com/zc22/archive/2013/06 ...
- LIS+LCS+LCIS
PS:本篇博文均采用宏#define FOR(i, a, n) for(i = a; i <= n; ++i) LIS:最长上升子序列 废话不多说:http://baike.baidu.com/ ...
- HDU 4618 Palindrome Sub-Array(DP)
题目链接 我还是图样啊....比赛的时候没敢暴力去搜... #include <cstdio> #include <cstdlib> #include <cstring& ...
- HDNOIP201404最短路径
HDNOIP201404最短路径 难度级别: A: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 a.b.c是3个互不相等的1 ...
- OI优化开关
#pragma comment(linker,"/STACK:10240000,10240000")#pragma GCC optimize ("O2")
- Quartz与Spring整合进行热部署的实现(一)
先来几张实现图 任务管理页 新建任务管理.目前实现叫简单的需求...若各位同学要实现复杂的设计...quartz都有提供强大的支持.小弟目前的需求做到这已经够用了. 接下来.我们如何实现quartz的 ...
- [转自51CTO]ITIL与ISO20000的关系
ITIL它不是一个服务管理标准,而更应该说是一种结构化的方法或流程框架.基于这种方法和框架,已经有越来越多的IT服务管理标准被开发出来了.在这些基于ITIL的IT服务管理标准中,最突出的要属英国标准B ...
- html5shiv.js-让IE浏览器支持HTML5标准
兼容性IE8及以下IE版本 浏览器IE8及以下IE版本对HTML5标签的支持是有限的,我们可以通过在网页中添加脚本的方式来解决目前IE浏览器对HTML5支持的问题. <!–[if IE]> ...
- mybatis sql in 查询(mybatis sql语句传入参数是list)mybatis中使用in查询时in怎么接收值
1.in查询条件是list时 <select id="getMultiMomentsCommentsCounts" resultType="int"> ...