查询是我们在使用数据库过程中使用最频繁的操作,掌握查询的技巧是每个合格程序员必备的素质,下面来学习一下mongodb的查询。
一、find简介
查询就是返回被查询集合的子集,子集的范围从0个到整个集合,find的第一个参数为查询条件,如果不设置条件则返回整个文档。
例:db.c.find()
db.c.find({'age':27})
db.c.find({'age':27, 'name':'leon'}) #and 条件,意思是age为27且name为leon
1、指定返回值
find函数的第二个参数用来设定返回字段,通过过滤不必要的字段,可以节省传输数据量及客户端解码文档的时间和内存消耗.
例:db.user.find({}, {"username":1, "email":1})
上面将会返回三个字段:_id, username, email
_id是默认返回的,要显式过滤某字段可以把1改为0
2、限制
数据库所关心的查询文档的值必须是常量
二、查询条件
1、$lt 、$lte 、$gt、 $gte
$lt 、$lte 、$gt、 $gte 、$ne分别对应 <、<=、>、>=、!=
例如,查询在18~30岁的用户
db.users.find({"age":{"$gte":18, "$lte":30}})
查义2007/1/1日前注册的人,
start = new Date("01/01/2007")
db.users.find({"registered":{"$lt":start}})
2、OR查询
两种方式进行OR查询。
$in 查询一个键的多个值,与之对应的是$nin
例:db.raffle.find({'ticket_no':{"$in":[725, 542, 390]}})
$in只能对单个键做OR查询,多键查询要用$or.
db.raffle.find({'$or':[{'ticket_no':75},{'winner':true}]})
3、$not
"$not"是元条件句,即可以用在任何其他条件之上。
$mod 会将查询的值除以第一个给定值,若余数等于第二个给定值则返回该结果.
4、条件句的规则
条件句是内层文档的键,而修改器则是外层文档的键。