分享

MongoDB(四):查询

 LibraryPKU 2013-06-06

一.find简介

MongoDB使用find来进行查询。find的第一个参数决定了要返回哪些文档,其形式也是一个文档,说明要执行的查询细节。第二个参数指定要返回的键。指定返回的键既能节省传输的数据量,又能节省客户端解码文档的时间和内存消耗。看例子:
> db.c.find()    //将返回集合c中的所有内容。空洞查询文档{}会匹配集合的全部内容,若不指定查询文档,默认就是{}
> db.users.find({"age": 27})
> db.users.find({"age": 27}, {"username": 1})
注意事项:数据库所关心的查询文档必须是常量,也就是不能引用文档中其他键的值。
> db.stock.find("in_stock": "this.num_sold")    //不可行

二.查询条件

1.比较操作符
"$lt"、"$lte"、"$gt"和"$gte"分别对应<、<=、>和>=。看例子:
> db.users.find({"age": {"$gte": 20, "$lte": 50}})
2.OR查询
有两种OR查询的方式。"$in"可以用查询一个键的多个值。"$or"更通用一些,用来完成多个键值的任意给定值。看例子:
> db.raffle.find({"ticket_no": {"$in": [723, 434, 594]}})
> db.raffle.find({"$or": [{"ticket_no": 723}, {"winner": true}]})
3.$not
"$not"是元条件句,可以用在任何其他条件上。如:"$mod"会将查询的值除以第一个给定值,若余数等于第二个给定值则返回该结果。
> db.users.find({"id_num": {"$mod": [5, 1]}})
上面查询会返回"id_num"值为1、6、11等的用户。若想返回"id_num"为2、3、4、5、6等的用户,就要用"$not"了:
> db.users.find({"id_num": {"$not": {"$mod": [5, 1]}}})

三.特定于类型的查询

1.null
null不仅仅匹配自身,而且匹配“不存在的”。如果仅仅想匹配键值为null的文档,既要检查该键的值是否为null,还要通过"$exists"条件判定键值是否已存在:
> db.c.find({"z": {"$in": [null], "$exists": true}})
2.正则表达式
看例子:
> db.users.find({"name": /joe/i})
3.查询数组
数组绝大多数情况下可以这样理解:每一个元素都是整个键的值。例如,如果数组是一个水果清单,比如下面这样:
> db.food.insert({"fruit": ["apple", "banana", "peach"]})
查询:
> db.food.find({"fruit": "banana"})
会成功匹配给文档。

四.游标

基本使用:
> var cursor = db.people.find();
> while(cursor.hasNext()) {
... obj = cursor.next();
... }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多