八叶草

学习资料记录

查询(来源于mongodb权威指南)

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24ne
Advanced Queries

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;}")



posted on 2011-07-18 11:59 八叶草 阅读(744) 评论(0)  编辑 收藏 引用 所属分类: mongodb


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理