1.find
(1)查询条件(也叫查询文档) 第一个参数键值对进行匹配查询 默认是{} 返回全部
db.test.find()
(2)指定返回的键第二个参数 非零整数、true、字符串代表包含, 0和false代表不包含,可以配合使用
db.foo.find({},{"bar":1,"_id":false})
(3)查询文档值必须是常量
2.查询条件
(1)查询范围 $lt < , $lte <= , $gt > , $gte >=
除普通数字范围外,也适用于于查询日期范围
var start = new Date("2015-01-01"); var end = new Date("2015-01-31 23:59:59")
db.users.find({"createdate":{"$gt":start,"$lt":end},"age":{"$gte":28}});
(2)IN/OR查询
$in 查询一个键的多个值
db.users.find({"age":{"$in":[27,28,39]}});
$or 用来完成多个键值的任意给定值(查询文档是数组)
db.users.find({"$or":[{"createdate":{"$gt":start,"$lt":end}},{"age":{"$in":[27,29]}}]}) // 匹配 create在时间范围内,或age在范围内
(3)$not 可以用在任何其他条件组合
db.users.find({"age":{"$not":{"$in":[27,29]}}}); // 匹配键age的值不在27、29范围内的文档
(4)$exists 判断文档中是否存在某键
db.users.find({"bar":{"$exists":true}}) // 匹配存在键bar的文档
(5)$mod 取模运算符
查询的值除以第一个给定的值,判断余数是否等于第二个给定的值
db.users.find({"age":{"$mod":[5,3]}}); // 匹配键age除以5与3的文档
3.特定类型的查询
(1)null
null除匹配某键的值为null外,还可以匹配文档中“不存在”某键,如果仅仅想要匹配键值为null的文档,还需要用到$exists条件判定键值
db.users.find({"bar":{"$exists":true,"$in":[null]}}) // bar字段存在,且值为null
(2)正则表达式 /正则表达式/i 可以不写i
db.users.find({"name":/T?/i}) // name键的值匹配正则 T?
db.users.find({"age":28,"name":/.*/})
(3)查询数组
如果查询元素是数组
$all 同时包含多个元素
db.users.find({foo:{$all:[1,3,5]}}) // foo中包含值 1,3,5
如果只需要包含一个元素可以直接写出 db.users.find({foo:5}) // foo集合中包含值 5
$size 查询指定长度的数组
db.users.find({foo:{$size:4}});
$size不能与其他查询子句组合,如果需要查询指定长度范围,可以添加一个size键,每次向数组添加元素的时候,可以 $inc size的值
$slice 返回数组的一个子集合
db.users.find({},{foo:{$slice:3}}); // 其他属性正常 集合foo只输出前3项,负数代表后几项
(4)查询内嵌文档
使用 . 点表示法查询内嵌的键
db.user.find({"name.first":"Joe","name.last":"Schmoe"})
复杂内嵌文档使用 $elemMatch
db.user.find({"comments":{"$elemMatch":{"author":"Joe","score":{"$gte":5}}}})
4.$where查询
$where可以执行任意JavaScript作为查询的一部分 函数返回true或false 避免使用$where查询 太慢
db.foo.find({“$where”:"this.x+this.y==10"}) 等价于 db.foo.find({“$where”:"function(){this.x+this.y==10;}"})
5.游标
数据库使用游标来返回find的执行结果 var cursor = db.users.find()
while(cursor.hasNext()){
cursor.next()
}
(1)limit、skip和sort
db.c.find().limit(3) // 只返回3个结果
db.c.find().skip(3) // 略过前3个结果 返回剩余的结果
db.c.find().sort({username:1,age:-1}) // 正数 根据username升序,负数 根据age降序
第一次查询25条 db.c.find({"foo":"bar"}).limit(25).sort({"createdate":-1})
第二次跳过25条 db.c.find({"foo":"bar"}).limit(25).skip(25).sort({"createdate":-1})
(2)避免使用skip略过大量结果
查询记录总数 db.keyword.find().length() ==db.keyword.find().count()
查询不重复数据的记录总数 db.keyword.distinct("keyword").length 查看keyword表中keyword字段没有重复的记录总数
最简单的分页就是用limit返回结果的第一页,然后将每个后续页作为相对于开始的偏移量返回
var page1 = db.foo.find(criteria).limit(100);
var page2 = db.foo.find(criteria).skip(200).limit(100);
var page3 = db.foo.find(criteria).skip(300).limit(100);
第二种方法可以同排序之后的结果来实现
var page1 = db.foo.find().sort({"date":-1}).limit(100);
// 然后通过最后一个文档的date继续查询
var lastest = null;
while(page1.hasNext()){
laster = page1.next();
}
var page2 = db.foo.find({"date":{"$gt":lastest.date}}).sort({"date":-1}).limit(100);
(3)高级查询选项
查询分为包装的和普通的两类
shell会把比如包装的 var cursor = db.foo.find({foo:"bar"}) .sort({"x":1}) 转换成普通的{"$query":{"foo":"bar"},"orderby":{"x":1}}
选项举例
$maxscan : integer 指定查询最多扫描的文档数量
$min : document 查询的开始条件
$max : document 查询的结束条件
$hint : document 指定服务器使用哪个索引进行查询
$explain : boolean 获取查询执行的细节(用到的索引、结果数量、耗时等),并非真正执行查询
$snapshot : boolean 确保查询的结果是在查询执行的那一刻的一致快照 如果使用了,查询就是针对不变的集合视图进行的,否则对游标的操作会影响集合
1、查询所有记录 db.userInfo.find(); 相当于:select * from userInfo; 默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;” 但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= 50;这样每页就显示50条记录了。 2、查询去掉后的当前聚集集合中的某列的重复数据 db.userInfo.distinct("name"); 会过滤掉name中的相同数据 相当于:select distict name from userInfo; 3、查询age = 22的记录 db.userInfo.find({"age": 22}); 相当于: select * from userInfo where age = 22; 4、查询age > 22的记录 db.userInfo.find({age: {$gt: 22}}); 相当于:select * from userInfo where age >22; 5、查询age < 22的记录 db.userInfo.find({age: {$lt: 22}}); 相当于:select * from userInfo where age <22; 6、查询age >= 25的记录 db.userInfo.find({age: {$gte: 25}}); 相当于:select * from userInfo where age >= 25; 7、查询age <= 25的记录 db.userInfo.find({age: {$lte: 25}}); 8、查询age >= 23 并且 age <= 26 db.userInfo.find({age: {$gte: 23, $lte: 26}}); 9、查询name中包含 mongo的数据 db.userInfo.find({name: /mongo/}); //相当于%% select * from userInfo where name like ‘%mongo%’; 10、查询name中以mongo开头的 db.userInfo.find({name: /^mongo/}); select * from userInfo where name like ‘mongo%’; 11、查询指定列name、age数据 db.userInfo.find({}, {name: 1, age: 1}); 相当于:select name, age from userInfo; 当然name也可以用true或false,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。 12、查询指定列name、age数据, age > 25 db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1}); 相当于:select name, age from userInfo where age >25; 13、按照年龄排序 升序:db.userInfo.find().sort({age: 1}); 降序:db.userInfo.find().sort({age: -1}); 14、查询name = zhangsan, age = 22的数据 db.userInfo.find({name: 'zhangsan', age: 22}); 相当于:select * from userInfo where name = ‘zhangsan’ and age = ‘22’; 15、查询前5条数据 db.userInfo.find().limit(5); 相当于:selecttop 5 * from userInfo; 16、查询10条以后的数据 db.userInfo.find().skip(10); 相当于:select * from userInfo where id not in ( select top 10 * from userInfo ); 17、查询在5-15之间的数据 db.userInfo.find().limit(10).skip(5); 可用于分页,limit是pageSize,skip是第几页*pageSize 18、or与 查询 db.userInfo.find({$or: [{age: 22}, {age: 25}]}); 相当于:select * from userInfo where age = 22 or age = 25; 19、查询第一条数据 db.userInfo.findOne(); 相当于:select * from userInfo where rownum = 1; db.userInfo.find().limit(1); 20、查询某个结果集的记录条数 db.userInfo.find({age: {$gte: 25}}).count(); 相当于:select count(*) from userInfo where age >= 20; 21、按照某列进行排序 db.userInfo.find({sex: {$exists: true}}).count(); 相当于:select count(sex) from userInfo;
相关推荐
2 MongoDB服务器的启动优化.mp4 3 MongoDB客户端基础使用.mp4 4 MongoDB集合的多种查询条件.mp4 5 MongoDB索引查询与建立.mp4 6 MongoDB数据库的监控命令.mp4 7 MongoDB副本集的搭建.mp4 8 MongoDB副本集故障自动...
目录: 1.MongoDB 成为最好 NoSQL 数据库的原因是什么? 2.NoSQL 数据库有哪些类型? 3.MySQL 与 MongoDB 之间最基本的差别是什么?...10.MongoDB 在 A:{B,C}上建立索引,查询 A:{B,C}和 A:{C,B}都会使用索引吗? ......
真实有效的mongodb视频教程地址 深入浅出 MongoDB 高清IT教程视频下载 1.1、-nosql与MongoDB.mp4 1.2、-MongoDB安装配置.mp4 1.3、-MongoDB?... 2.3、_MongoDB查询语法2.mp4 2.4、-MongoDB查询语法3.mp4
1. 库和集合的基础命令 1. 库级命令 2. 表(集合)级命令 1. 增加一个文档 2. 一次增加多个文档 1. 赋值表达式 2. 修改选项 1. 字段值查询
05-查询2_recv 06-查询3_recv 07-聚合-分组_recv 08-聚合-筛选、排序、分页_recv 09-聚合-拆分数组_recv 资料 02.MongoDB高级 视频 01-复习 02-索引 │03-安全性 04-复制-开启服务 05-复制-数据备份 06-复制-主从...
查询文档2.MongoDB 与 RDBMS Where 语句比较3.MongoDB AND 条件4.MongoDB OR 条件5.AND 和 OR 联合使用 1.查询文档 语法 MongoDB 查询数据的语法格式如下: db.collection.find(query, projection) query :可选,...
3.丰富查询语句,比如算术查询,等值查询,逻辑查询,数组查询,where查询,模糊查询等 4.索引创建,游标、存储过程使用 5.聚合运算,支持Group,Aggregation, MapReduce 的统计和集合 6.全文检索和地理位置信息检索...
1、MongoDB查询 4 2、order和投影查询 5 3、MongoDB增加 6 4、MongoDB修改 7 5、MongoDB删除 9 6、MongoDB分页 10 7、MongoDB模糊查询和其他条件查询 12 五、Mongoose(node使用)(前提安装好node环境有node基础) 13...
基于nodejs+mongodb的简单报名登记+查询系统源码(课程设计).zip 该项目是个人毕设项目源码,评审分达到95分,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或...
454.1.1 指定返回的键 464.1.2 限制 464.2 查询条件 474.2.1 查询条件 474.2.2 OR 查询 474.2.3 $not 484.2.4 条件句的规则 494.3 特定于类型的查询 494.3.1 null 494.3.2 正则表达式 504.3.3 ...
423.5 请求和连接 43第4章 查询 454.1 find简介 454.1.1 指定返回的键 464.1.2 限制 464.2 查询条件 474.2.1 查询条件 474.2.2 OR查询 474.2.3 $not 484.2.4 条件句的规则 494.3 特定于类型的...
课时2:MongoDB数据数据查询与分析.mp4 课时3:MongoDB数据库核心知识.mp4 课时4:MongoDB数据库管理备份.mp4 课时5:MongoDB开发实战:开发博客应用.mp4 课时6:MongoDB数据库性能分析与调优.mp4 课时7:MongoDB...
2.了解NoSQL和文档数据库 3.要求 4.其他帮助资源 4.1。支持 4.1.1。社区论坛 4.1.2。专业支持 4.2。发展之后 5.新&值得注意的 5.1。Spring Data MongoDB 2.1中的新特性 5.2。Spring Data MongoDB 2.0中的新特性 5.3...
基于MongoDB JSON的查询方法和字段限制 11.3.4。基于JSON的SpEL表达式查询 11.3.5。类型安全的查询方法 11.3.6。全文搜索查询 11.3.7。预测 11.4。杂 11.4.1。CDI集成 12.反应性MongoDB存储库 12.1。介绍 12.2。活性...
1.java连接mongo数据库查询统计信息导出为excel表格 2.所有连接参数都可以动态输入,参数包括:ip、端口、数据库名称、集合名称、查询参数(公众号,写在指定文件中),导出表格存放位置
MongoDB测试用例 2 一、涉及调优参数 2 二、测试环境 2 2.1测试组网 2 2.2设备配置 2 三、用例设计 3 1. 功能测试 3 1.1. 高可用性 3 1.2. 基本功能 5 2. 性能测试 16 2.1. 写入性能 16 2.2. 查询性能 17 2.3. 分析...
2 | 第 5 章:构建查询第 5 章构建查询本章内容查询一种电子商务数据模型MongoDB查询语言的详细内容查询选择器及其选项MongoDB不使用SQL语言,
mongod.exe --install --dbpath=d:\mongodb\data --logpath=d:\mongodb\log\log.log -auth -serviceName "serviceName" 2.卸载服务 mongod.exe --remove --serviceName "serviceName" 3.启动服务 ...
03-mongodb操作2 03-mongo库表操作语句 04-CURD操作详解 04-mongodb操作3 05-回顾 05-深入查询表达式 06-索引的使用 06-游标操作 07-固定集合 07-索引 08-备份与恢复 08-用户管理 09-mongoDB备份与恢复 ...
Mongodb 查询到 sql 查询转换器。 示例:在:db.user.find({name: 'julio'}); out: SELECT * FROM user WHERE name = 'julio'; 在:db.user.find({_id: 23113},{name: 1, age: 1}); out: SELECT name, age FROM ...