http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24neAdvanced Queries
.spacetree * ul{
padding-left:0px;
margin-left: 0px;
}
.spacetree * li{
margin-left: 5px;
padding-left:5px;
}
and
find({key:value,key:value})
指定返回的键
find({},{key:1,key:0})
查询条件
$lt<
$lte <=
$gt >
$gte >=
find({key:{$get:18,$lte:30}})
$in 可以用来查询一个键的多个值。
$nin 将返回与数组中所有条件都不匹配的文档。
find({key:{$in:[18,30]}})
$ne:不等于,或不在数组中
ffind({key:{&ne:value}})
$or更通用一些,用来完成多个键值的任意给定值。
find({$or:[{key:value},{key:value}]})
$not是元条件句,即可以用在任何其他条件之上。
$mod会将查询的值除以第一个给定的值,若余数等于第二个给定值则返回该结果。
fnd({key:{$not:{$mod:[5,1]}}})
条件句规则
条件句是内层文档的键,而修改器则是外层文档的键。
一个键可以有多个条件,但是一个键不能对应多个更新修改器。
null不仅匹配自身,而且匹配不存在的。所以这种匹配还会返回缺少这个键的所有文档。
$exists判段键值已存在。
find({key:{$in:[null],$exists:true}})
数组
$all 会匹配一组元素。
要找既有apple,又有banana的文档,就得用$all来查询
find({fruit:{$all:["apple","banana"]}})
想查询数组指定位置的元素,则需要使用key.index语法指定下标
find({key.2:value})
$size 可以用其查询指定长度的数组。$size并不能与其他查询子句组合。
find({key:{$size:3}})
$slice find的第二个参数是可选的,可以指定返回那些键。$slice返回数组的一个子集合。
findOne(条件,{key:{$slice:10}}) 返回数组的前10条记录
findOne(条件,{key:{$slice:-10}}) 返回数组的后10条记录
findOne(条件,{key:{$slice:[23,10]}}) 偏移值23开始的10条记录
查询内嵌文档
find({key.subkey:value,key.subkey:value})
$elemMatch 将限定条件进行分组,仅当需要对一个内嵌文档的多个键操作时才会用到。
find(key:{$elemMatch:{key:value,key:value}})
$where 可以执行任意JavaScript作为查询的一部分。
find($where:"this.x+this.y==10")
find($where:"function(){return 1;}")