一.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(); ... }
|