MongoDB高级查询详细

摘要:
在前言的前几章,老玩家可以绕道而行。新手晚上闲着也很痛苦。最好把订单放在一边,这样您就可以对MongoDB有一定的了解。哈哈,mongodb太任性了。MongoDB面向文档的NoSql数据库中的高级查询需要解决的重要问题不是高性能并发读写问题,而是确保海量数据的存储,同时具有比一般数据库更好的查询性能。
前言

前几篇,老玩家绕道即可,新手晚上闲着也是蛋疼,不如把命令敲一边,这样你就会对MongoDB有一定的掌握啦。如果没有安装MongoDB去看我的上一篇博客  MongoDB下载安装与简单增删改查 

前奏:启动mongdb数据库服务,并进入shell界面

> cmd

> cd C:Program FilesMongoDBin  --进入mongdb安装文件的bin目录下。

> net start mongoDB;  --开启mongoDB数据库服务

> mongo   --进入shell界面

常用命令

> show dbs    -- 查看数据库列表

> use admin   --创建admin数据库,如果存在admin数据库则使用admin数据库

> db   ---显示当前使用的数据库名称

> db.getName()  ---显示当前使用的数据库名称

> db.dropDatabase()  --删当前使用的数据库

> db.repairDatabase()  --修复当前数据库

> db.version()   --当前数据库版本

> db.getMongo()  --查看当前数据库的链接机器地址 

> db.stats() 显示当前数据库状态,包含数据库名称,集合个数,当前数据库大小 ...

> db.getCollectionNames()   --查看数据库中有那些个集合(表)

> show collections    --查看数据库中有那些个集合(表)

> db.person.drop()  --删除当前集合(表)person

MongoDB接入Javascrip风格语法,for,while,next,hasNext,forEach,toArray,findOne,limit

MongoDB高级查询详细第1张

Note:

1、p={name:"张龙豪",age:18} 这个不是规范的json格式,使用这种类似javascript语法,对象会自动补全为规范的json格式{"name":"张龙豪","age":18}.

2、我在这里插入2条数据,一条是insert语法,一条是save语法,这里的insert与save是一样的功能。

MongoDB高级查询详细第2张

Note:这里我主要用啦一个for语法,循环插入啦4条数据,是不是有点小激动。哈哈,mongodb就是这么任性。

MongoDB高级查询详细第3张

Note:这里是吧查询出来的

1、while:作为程序员应该都不陌生他是个循环。

2、hasNext: cursor集合遍历,是否还有数据。

3、printjson:输出集合中的文档

4、next:当前文档,并向下遍历。

MongoDB高级查询详细第4张

Note:forEach循环输入,必须定义一个函数供每个游标元素调用。

MongoDB高级查询详细第5张

Note:游标也可以当作数组来用。

MongoDB高级查询详细第6张

Note:游标转换为真实的数组类型,使用。

MongoDB高级查询详细第7张

Note:findOne,返回结果集中的第一条数据。limit(3),返回结果集中的前三条数据。

MongoDB中的高级查询

面向文档的NoSql数据库重要解决的问题不是高性能的并发读写问题,而是保证海量数据存储的同时,具有比一般数据库更加良好的查询性能。

MongoDB高级查询详细第8张

Note:条件操作符号: > 、 < 、 >= 、<= 

1、 $gt //大于 > ,$lt //小于 < ,$gte //大于等于 >= ,$lte //小于等于

2、{"filed":{$op,value}}  //filed字段 ,$op条件操作符号,value值。

3、{"age":{$gt:1}} : person集合中年龄大于1的所有数据文档

MongoDB高级查询详细第9张

 Note:$all匹配所有,类似t-sql中的in,但是t-sql中的in是满足括号里面的任何一个都能出数据,而mongodb中的$all则必须满足[]中的所有值。

1、{age:{$all:[7,9]}}:age数组中只要有7和9就满足条件。如果只有7,没有9则不符合条件。

MongoDB高级查询详细第10张

Note:$exists判断字段是否存在,(true/false)

1、{city:{$exists:true}}: 集合中存在city这个字段的数据

MongoDB高级查询详细第11张

Note:$mod取模运算。

1、{age:{$mod:[7,6]}}:集合中模7余6的数据
MongoDB高级查询详细第12张

Note:$ne不等于

MongoDB高级查询详细第13张

Note:$in包含,$nin不包含。跟t-sql中的in,not in一样。

1、{age:{$in:[10,11]}}:如果age是数组的话,只要数组包含in中条件的任何一条数据,都能被检索出来。不是数组,则只要满足in中的任何一个条件数据,也可以被检索出来。

MongoDB高级查询详细第14张

Note:数组元素个数。

1、{age:{$size:4}}:age数组元素个数为4的数据结果集。

MongoDB高级查询详细第15张

Note:$not正则匹配,不包含以张开头的数据。

MongoDB高级查询详细第16张

Note:skip,limit,sort,count

1、skip(2):从数据集的第二条开始查询

2、limit(2) : 依次查出2条数据。

3、sort({age:1}) : 1.正序查询,-1倒叙查询。

4、count():结果集总数。

免责声明:文章转载自《MongoDB高级查询详细》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转帖]javascript版 UrlEncode和UrlDecode函数Qt带来的是更加低廉的开发成本和学习成本,对于很多小公司而言,这种优势足以让他们获得更大的利润空间 good下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL、MongoDB、Redis 数据库之间的区别

NoSQL 的全称是 Not Only SQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是为了取代传统的关系型数据库而被设计的,它们分别代表了不同的数据库设计思路。 MongoDB:它是一个内存数据库,数据都是放在内存里面的。对数据的操作大部分都在内存中,但MongoDB并不是单纯的内存数据库。MongoDB 是由 C++...

IOS 数据存储之 FMDB 详解

http://www.cnblogs.com/jerehedu/p/4623955.html FMDB是用于进行数据存储的第三方的框架,它与SQLite与Core Data相比较,存在很多优势。 FMDB是面向对象的,它以OC的方式封装了SQLite的C语言API,使用起来更加的方便,不需要过多的关心数据库操作的知识。但是它本身也存在一些问题,比如跨平台,...

MongoDB分页的Java实现和分页需求的思考

前言 传统关系数据库中都提供了基于row number的分页功能,切换MongoDB后,想要实现分页,则需要修改一下思路。 传统分页思路 假设一页大小为10条。则 //page 1 1-10 //page 2 11-20 //page 3 21-30 ... //page n 10*(n-1) +1 - 10*n MongoDB提供了skip()和...

SQL语句的三大类

数据定义语言(DDL Data Defination Language):用于创建和定义数据库对象,并且将对这些对象的定义保存到数据库字典中,通过DDL语句可以创建数据库对象、修改数据库对象、删除数据库对象等。 数据控制语言(DCL Data Control Language):用于修改数据库结构的操作权限。 数据操纵语言(DML Data Manipul...

hibernate主键自动生成

Entity类中,主键尽量使用可以为null值的类型,比如Integer,Long,String等,不要用int,long等。因为如果主键为null,则表示该实体类还没有保存到数据库,是一个临时状态(Transient),而int,long不能设置为null,不具备该功能。 <!--以上抄书,待研究论证--> Java代码   <...

数据库中日期大小的判断

数据库中表字段 pubdate ,如设置初始默认值为 getdate() ,则最后产生的日期为:2006-10-17 或 2006-01-06 这样的格式数据。 ----------------------------- 假如做查询,从前台取过来的日期 enddate 为 "2006-10-17" ,注意此日期无时,分秒。 如果想要做一个查询 ,把表中数据...