设为首页 - 加入收藏 - 网站地图 SecYe安全 Www.SecYe.Com - 国内网络信息安全IT技术门户网
当前位置:首页 > 数据库 > 数据库理论 > 正文

MongoDB 基本查询使用

时间:2016-09-22 15:39 来源:未知 作者:SecYe安全 阅读:

刚才前面发了Windows下安装使用MongoDB数据库,觉得就这样多吊人胃口啊,所以就顺便把一些基本的查询方法写出来,供大家参考学习,如果写的有不对的地方还请多多批评。我想看过前面写的"Windows下MongoDB的安装使用"的文章的应该知道怎么打开数据库了!现在我们就从这里接着讲!还有一点就是我的版本目前是2.0.4的哦!但是我看过很多方法在各个版本上还是通用的!补充下哈:在开始之前我要强调一个重点!文档就是一条数据意思,集合就是表的意思,默认监听端口是27017,mongodb是使用javascript交互的,不错你没有看错,就是javascript(前面有提到哦),这些在后面慢慢的深入中会发现如果会了javascript学习mongodb是多么上手的一件事!下面开始:使用之前别忘记先启动服务 1.show dbs

这个可以显示当前的实例下所有数据库的列表!不同的版本有不同的案例数据库!2.0.4的是local,并且是一个空的数据库!

2.use myFirst

myFirst是我创建的!如果你不创建的话,那么这句就可以隐式的帮你创建myFirst数据库,use myFirst也就是使用这个数据库的意思!现在应该没有数据库,那么我们就插入数据进行学习测试。

3.db.test1.save({"name":"qlier", age:21, "sex":"male"});

test1这个表也会隐式的被创建,并且插入一条文档 ,文档有name,age,sex。下面我们在用另外一种方法插入一条数据。

4.db.test1.insert({"name":"tom", age:19, "sex":"male"});

在test1中插入数据,可能你会问insert和save有什么不同,他们还真的有点不同!

insert仅仅是插入文档到集合中,如果记录不存在则插入,如果记录存在则忽略save是在文档不存在时插入,存在时则是更新

5.db.test1.find();

这个可以查询test1集合中所有的数据。所有的文档都有_Id这一列,这个是主键,是系统生成唯一的主键,不过我们也可以自己来操作,怎么操作就自己动动脑子了,不过自己操作的时候可千万不能有重复的值,要不会有异常。

6.db.test1.findOne();

这个查询test1集合中最上面一条数据并显示。

7.db.test1.find({name:"qlier"});

查询name是qlier的文档。

8.db.test1.update({name:"tom"}, {$set:{name:"Jim"}});

修改名称tom为Jim,这个是修改的方法。

9.db.test1.remove({name:"Jim"});

这个是删除name为Jim!

这些都是最最基本的增删改查了,下面将重点讲解查询!表test2是在我电脑上创建过的,就name, age, sex,和test1一样。

10.条件操作符<、<=、>、>=

db.test2.find({age:{$gt:20}});

查询年龄大于12岁的用户,如此的还有$lt小于、$gte大于等于、$lte小于等于。

11.$all匹配所有

db.test2.find({age:{$all:[8]}});

他会匹配所有age等于8的文档。

12.$exists判断字段是否存在

db.test2.find({age:{$exists:true}});

查询所有存在age字段的文档。false表示不存在。

13.$mod取模运算

db.test2.find({age:{$mod:[10, 1]}});

查询所有age模10等于1的文档。

14$ne不等于

db.test2.find({age: {$ne : 20}});

查询所有年龄不等于20的用户文档。

15.$in包含

db.test2.find({age : { $in : [20, 21, 22]}});

查询所有年龄等于20、21、22的用户文档。

16$nin不包含

db.test2.find({age : {$nin : [20, 21, 22]}});

查询所有年龄不等于20、21、22的用户文档。

17.count查询记录条数

db.test2.find().count();

返回test2集合中文档记录的数目。

18.limit限制显示的条数

db.test2.find().limit(5);

返回test2中上面的5条记录。

19.skip限制返回记录的起点

db.test2.find().skip(3);

返回test2中上面数第三条数据一下的所有数据

20.分页的实现

db.test2.find().skip(1).limit(5);

返回从第二条数据开始,显示5条数据,这个可以用作分页,很简单就实现了!

21.sort排序

db.test2.find().sort({age:1});

所有的数据按年龄大小升序(asc)排列,既然1表示asc排列,那么-1就表示desc排列,这是真的。

22.distinct去掉重复值

db.test2.find().distinct("name");

按name的重复值筛选数据。

今天就写到这里,这些都是很常用的基本的查询操作,至于是否有更复杂的查询呢,肯定是有了,包括group查询、联合查询、正则表达式查询、null值的处理等!只不过这些在后面都会有提到的。同学们看到这里应该可以在我们非常喜欢的Node.js中试一试了,体验Mongodb带给我们的更多惊喜。 后面还会继续讲怎么自动启动服务、日志记录、存储过程等等。供大家一起参考学习,如果写的不对的地方还请多多指出批评哦。

本文来源:SecYe安全网[http://www.secye.com] (责任编辑:SecYe安全)

点击复制链接 与好友分享!

顶一下
(0)
0%
踩一下
(0)
0%