$exists判断字段是否存在
查询所有存在age 字段的记录
db.users.find({age: {$exists: true}});
大小比较操作符
<, <=, >, >= 这个操作符就不用多解释了,最常用也是最简单的。
db.collection.find({ "field" : { $gt: value } } ); // 大于: field > value
db.collection.find({ "field" : { $lt: value } } ); // 小于: field < value
db.collection.find({ "field" : { $gte: value } } ); // 大于等于: field >= value
db.collection.find({ "field" : { $lte: value } } ); // 小于等于: field <= value
如果要同时满足多个条件,可以这样做
db.collection.find({ "field" : { $gt: value1, $lt: value2 } } ); // value1 < field < value2
Null空值处理
在users文档找出”sex”值为”null”并且字段存在的记录。
> db.users.find({sex:{"$in":[null], "$exists":true}});
$mod取模运算
查询age 取模6 等于1 的数据
> db.c1.find({age: {$mod : [ 6 , 1 ] } })
{ "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }
$ne不等于
在users文档中查询”age”不等于20的记录:
db.users.find({age:{$ne:20}});
$size数组元素个数
$size
对于查询数组来说是非常有用的,顾名思义,可以用它查询特定长度的数组。例如:
> db.users.find({favorite_number: {$size: 3}})
$size
并不能与其他查询条件(比如$gt
) 组合使用,但是这种查询可以通过在文档中添加一个”size”键的方式来实现。这样每一次向 指定数组添加元素时,同时增加”size”的值。比如
> db.users.update(criteria,{"$push":{"favorite_number":"1"},"$inc":{"$size":1}})
自增操作的速度非常快,所以对性能的影响微乎其微。这样存储文档后,就可以像下面这样查询了:
> db.users.find({"$size":{"$gt":3}})
$regex正则表达式匹配
查询name字段以B开头的记录
db.users.find({name: {$regex: /^B.*/}});
forEach遍历游标
MongoDB 还有另一种方式来处理游标,即forEach()
方法:
> db.t3.find().forEach( function(u) { printjson(u); } );