博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongodb入门-6查询1
阅读量:4199 次
发布时间:2019-05-26

本文共 3735 字,大约阅读时间需要 12 分钟。

mongodb入门-6查询1
 
我感觉在使用库的时候使用的最多的是查询,所以学好了查询,我们将来做开发的时候会很顺手,很容易。同样mongodb提供了强大的查询功能,我在这里尽量的详细的讲明白这些查血,如果哪里错误还请大虾指出。
 
查找某集合所有文档
 
在mongodb中查询使用find方法,使用方法是db.集合名.find({}),find方法的参数是一个json对象,更确切说是bson对象,但是如果有人说json对象的话你理解了就可以了。我们使用find方法的时候,如果没有传递参数那就是传递的一个空json,也就是查询集合中的所有文档。如下:
 
[ ] 
> db.user.find()  
{ "_id" : ObjectId("5198c286c686eb50e2c843b2"), "name" : "user0", "age" : 0 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b3"), "name" : "user1", "age" : 1 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b4"), "name" : "user2", "age" : 2 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b5"), "name" : "user3", "age" : 3 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b6"), "name" : "user4", "age" : 4 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b7"), "name" : "user5", "age" : 5 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b8"), "name" : "user6", "age" : 6 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b9"), "name" : "user7", "age" : 7 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843ba"), "name" : "user8", "age" : 8 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843bb"), "name" : "user9", "age" : 9 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843bc"), "name" : "user10", "age" : 10 }  
{ "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "name" : "user0", "age" : 20 }  
条件查询
 
既然find有参数那我们就可以给其传递参数,如下我们查询name为user0的文档:
[html] 
> db.user.find({name:"user0"})  
{ "_id" : ObjectId("5198c286c686eb50e2c843b2"), "name" : "user0", "age" : 0 }  
{ "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "name" : "user0", "age" : 20 }  
返回文档的某些值
 
这里我们找到了name为user0的文档,但是有时候我们只想获得这个文档的某几个值,这时候我们就可以给find传第二个参数,这里的参数同第一个一样都是json。我们只想获得age的值,可以如下编写:
[html] 
> db.user.find({name:"user0"},{age:1})  
{ "_id" : ObjectId("5198c286c686eb50e2c843b2"), "age" : 0 }  
{ "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "age" : 20 }  
不让文档显示某些值
 
看上面的代码我们给age设置为1,表示我们需要得到age的值,如果我们不想要age的值,我们可以将其设置为0。同样true、false和1、0在这里作用一样,还有一点在mongodb这个地方使用的数字非0就代表真,但是不建议使用其他的数字,我们可以使用如下的方式去掉age的值:
 
[html] 
> db.user.find({name:"user0"},{age:0})  
{ "_id" : ObjectId("5198c286c686eb50e2c843b2"), "name" : "user0" }  
{ "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "name" : "user0" }  
条件表达式
 
在mongodb中可以使用条件表达式< ,>, <=,>=,这里没有=,因为向上面那样的查询就是=的效果,前面的字符对应mongodb中的方法为$.lt,$.gt,$lte,$gte。
 
我们查询年龄大于5的用户,如下:
 
[html] 
> db.user.find({age:{$gt:5}})  
{ "_id" : ObjectId("5198c286c686eb50e2c843b8"), "name" : "user6", "age" : 6 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b9"), "name" : "user7", "age" : 7 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843ba"), "name" : "user8", "age" : 8 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843bb"), "name" : "user9", "age" : 9 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843bc"), "name" : "user10", "age" : 10 }  
{ "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "name" : "user0", "age" : 20 }  
查找年龄大于等于5的用户,如下:
[html] 
> db.user.find({age:{$gte:5}})  
{ "_id" : ObjectId("5198c286c686eb50e2c843b7"), "name" : "user5", "age" : 5 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b8"), "name" : "user6", "age" : 6 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b9"), "name" : "user7", "age" : 7 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843ba"), "name" : "user8", "age" : 8 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843bb"), "name" : "user9", "age" : 9 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843bc"), "name" : "user10", "age" : 10 }  
{ "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "name" : "user0", "age" : 20 }  
同样$gt/$.gte跟上面的使用方法相同。
limit限制返回的文档的数量
 
在这里介绍一下limit方法,这个方法是限制返回的文档的数量。使用如下:
 
[html] 
> db.user.find({age:{$gte:5}}).limit(3)  
{ "_id" : ObjectId("5198c286c686eb50e2c843b7"), "name" : "user5", "age" : 5 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b8"), "name" : "user6", "age" : 6 }  
{ "_id" : ObjectId("5198c286c686eb50e2c843b9"), "name" : "user7", "age" : 7 }  
与上面的比较只显示了三条数据。

 

转载自:http://www.2cto.com/database/201305/212155.html

你可能感兴趣的文章
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
在C++中如何实现模板函数的外部调用
查看>>
HTML5学习之——HTML 5 应用程序缓存
查看>>
HTML5学习之——HTML 5 服务器发送事件
查看>>
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
kermit的安装和配置
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>
openstack-instance-high-availability-Evacuate
查看>>
evacuate-instance-automatically
查看>>
pycharm常用设置(keymap设置及eclipse常用快捷键总结)
查看>>
关于在openstack的环境变量.bashrc自定自己简化命令
查看>>
Openstack Heat Project介绍(转)
查看>>
How to Perform an Upgrade from Icehouse to Juno(ice升级到juno)
查看>>
高扩展性网站的50条原则(转)-思维导图
查看>>
解决openstack novnc一段时间后自动挂断登录不上问题,novncproxy dead but pid file exists
查看>>
构建OpenStack的云基础架构:ManageIQ(转)
查看>>