四、MongoDB的查询
db.blogs.insert([
{
"author": "张三",
"title": "MongoDB简介",
"content": "它是介于关系型数据库和非关系型数据库之间的一种NoSQL数据库,用C++编写,是一款集敏捷性、可伸缩性、扩展性于一身的高性能的面向文档的通用数据库",
"tags": [
"MongoDB",
"NoSQL"
],
"comment": [
{
"name": "Jack",
"detail": "Good!",
"date": ISODate("2015-07-09 09:55:49")
},
{
"name": "Tom",
"detail": "Hello World!",
"date": ISODate("2015-07-09 18:12:35")
},
{
"name": "Alice",
"detail": "你好,Mongo!",
"date": ISODate("2015-07-10 20:30:30")
}
],
"readCount":
},
{
"author": "李四",
"title": "1+1等于几",
"content": "有的人说1+1=2,因为这是老师从小告诉我们的;而有的人说1+1=11,这是两个1的组合;但是有些人就认为1+1=1,他们觉得1个团队加上另一个团队,会组成了一个更强大的团队!",
"tags": [
"story",
"rule",
"数学"
],
"comment": [
{
"name": "王小光",
"detail": "每个人心里边都有自己的答案。",
"date": ISODate("2015-07-10 11:45:57")
}
],
"readCount":
},
{
"author": "李四",
"title": "如何写一篇好的博客?",
"content": "1、目标;2、坚持;3、分享;4、学习;5、提高",
"tags": null,
"comment": [
{
"name": "小明",
"detail": "ComeOn!!!!",
"date": ISODate("2015-07-10 14:49:06")
},
{
"name": "Nike",
"detail": "终身学习!",
"date": ISODate("2015-07-11 10:22:36")
},
{
"name": "小红",
"detail": "贵在坚持吧、",
"date": ISODate("2015-07-12 12:12:12")
}
],
"readCount": ,
"isTop": true
}
])
Test Data
以上面的测试数据为基础,进行下面的基本查询操作:
1、查询所有博客
db.blogs.find()
或
db.blogs.find({}) 注:查询一个文档:db.blogs.findOne()
2、查询所有博客的标题和内容(指定需要返回的键值)
db.blogs.find({},{"title":1,"content":1,"_id":0}) 注:1表示返回,0表示不返回。默认情况下,“_id”这个键总是被返回,即便是没有指定这个键
3、查询作者为“张三”的博客(=操作)
db.blogs.find({"author":"张三"})
或
db.blogs.find({"author":{"$eq":"张三"}})
4、查询除了作者为“张三”的博客(!=操作)
db.blogs.find({"author":{"$ne":"张三"}})
5、查询作者为“李四”并且博客标题为“MongoDB简介”的博客(and操作)
db.blogs.find({"author":"张三","title":"MongoDB简介"})
6、查询阅读量大于等于200并且小于1000的博客(>=操作)
db.blogs.find({"readCount":{"$gte":200,"$lt":1000}}) 注:“$lt”,“$lte”,“$gt”,“$gte”分别对应<,<=,>,>=操作
7、查询作者为“张三”或者“李四”的博客(or操作)
db.blogs.find({"$or":[{"author":"张三"},{"author":"李四"}]})
8、查询博客标签包含了“NoSQL”或者“数学”的博客(in操作)
db.blogs.find({"tags":{"$in":["NoSQL","数学"]}})
注:not in操作
db.blogs.find({"tags":{"$nin":["NoSQL","数学"]}}) //不包含
9、查询标签为空的博客(null操作)
db.blogs.find({"tags":null})
注:null不仅会匹配到某个键为null的文档,也会匹配不包含这个键的文档
10、查询内容里边包含了数字“1”的博客
db.blogs.find({"content":/1/}) 注:只要符合常规正则表达式的,都能被MongoDB接受
数组操作
11、查询标签里边既包含“story”,又包含了“rule”的博客
db.blogs.find({"tags":{"$all":["story","rule"]}})
12、查询第一个标签是“MongoDB”的博客
db.blogs.find({"tags.0":"MongoDB"}) 注:数组的下标是从0开始的
13、查询标签个数为3个的博客
db.blogs.find({"tags":{"$size":3}})
内嵌文档
14、查询“jack”评论过的博客
db.blogs.find({"comment.name":"Jack"}) 注:因为内嵌文档“.”的问题,所以不能使用URL等
15、假设每页2篇博客,按阅读量倒序,取第二页的数据
db.blogs.find({}).skip(2).limit(2).sort({"readCount":-1})
注:skip()、limit()、sort(),分别表示略过文档的数量,匹配的数量和排序(1表示正序,-1表示倒序)
四、MongoDB的查询的更多相关文章
- TODO:MongoDB的查询更新删除总结
TODO:MongoDB的查询更新删除总结 常用查询,条件操作符查询,< .<=.>.>=.!= 对应 MongoDB的查询操作符是$lt.$lte.$gt.$gte.$ne ...
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析
文章出处:http://inter12.iteye.com/blog/1430144 MYSQL的全表扫描,主键索引(聚集索引.第一索引),非主键索引(非聚集索引.第二索引),覆盖索引四种不同查询的分 ...
- Mongodb高级查询【二】
上一篇文章,写了mongodb常规操作,继续写入,本章主要讲高级查询,文本,聚集,大数据查询. Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个.当然有很多查询跟关系型查询无法相比. ...
- mongoDB高级查询$type4array使用解析
今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...
- MongoDb 命令查询所有数据库列表
原文:http://blog.csdn.net/huxu981598436/article/details/47216493 MongoDb 命令查询所有数据库列表 CODE: > show d ...
- 《mongoDB》查询
一:简单查询 db.collection.find(query, projection) - query :可选,使用查询操作符指定查询条件 - projection :可选,使用投影操作符指定返回的 ...
- mongodb并列查询,模糊查询
在mongodb的查询语句中可以这么写{“a”:$gt(1),"a":$lt(5)} 但这么查询出来的值会做单个条件匹配,最终结果为a大于1的集合+a小于5的集合 如果需要实现去交 ...
- mongodb中查询返回指定字段
mongodb中查询返回指定字段 在写vue项目调用接口获取数据的时候,比如新闻列表页我只需要显示新闻标题和发表时间,点击每条新闻进入详情页的时候才会需要摘要.新闻内容等关于此条新闻的所有字段. ...
- MongoDB 数据类型查询 — $type使用
MongoDB 使用过程中经常需要根据字段的类型来查询数据, 而MongoDB中查询字段类型是通过$type操作符来实现. $type使用法语: db.集合名.find({$type:类型值}); / ...
随机推荐
- stat 查看文件修改时间
Ø 访问时间(accesstime):读取一次文件的内容,该时间便会更新 Ø 修改时间(modifytime):对文件内容修改一次便会更新该时间. Ø 改变时间(changetime):更改文件 ...
- ASP.NET MVC4 WebAPI若干要点
本文仅仅是将一些可以运行无误的WebAPI示例的要点,记录下来,供自己查阅,也供刚刚学习WebAPI的读者参考之. 1.默认的API是不会过滤到action这个级别的,如果要过滤到这个级别,必须在路由 ...
- px、pt、in、dp、dpi
PPI 与 DPI ppi的运算方式是:PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数.即:长.宽各自平方之和的开方,再除以屏幕对角线的英寸数. 以iphone5为例, ...
- android 隐藏系统键盘
-----------------------------------------已验证----------------------------------- public static void c ...
- IBM Appscan基本操作手册
一.操作前提 1.首先下载Appscan的安装包 2.安装Appscan 二.操作流程 1.双击图标,打开Appscan软件 2.打开软件后,页面显示如下: 3.选择“文件-新建”,弹出如下的窗口: ...
- 个人收集(转载)CSS中 display:none和visibility:hidden的区别
visibility和display两个属性都有隐藏元素的功能,display:none和visibility:hidden的区别,简单的总结一句话就是:visibility:hidden隐藏,但在浏 ...
- Android开发-API指南-<compatible-screens>
<compatible-screens> 英文原文:http://developer.android.com/guide/topics/manifest/compatible-screen ...
- Lambda表达式有何用处?如何使用?
简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数.这一用法跟所谓 λ 演算(题目说明里的维基链接)的关系,有点像原子弹和质 ...
- Ajax.BeginForm 上传文件
在 Mvc 中上传文件时通常使用 Html.BeginForm 标签,同时对Form 添加属性 enctype = "multipart/form-data",前端代码如下: @H ...
- [linux] 替换字符串
Linux下批量替换多个文件中的字符串的简单方法.用sed命令可以批量替换多个文件中的字符串. 命令如下:sed -i “s/原字符串/新字符串/g” `grep 原字符串 -rl 所在目录` 例如: ...