Mongodb $size操作符
Posted by 撒得一地 on 2016年3月31日 in Mongodb教程
上一篇: Mongodb $elemMatch操作符
下一篇: Mongodb $exists操作符
下一篇: Mongodb $exists操作符
$size 操作符匹配指定数组中元素个数和指定参数一致的文档,如:
db.collection.find({field:{$size:2}});
上面的查询将返回collection数据库中field字段是数组类型而且元素个数为2的文档。比如,查询结果可能为:{ field: [ red, green ] } 和{ field: [ apple, lime ] },但是不可能是 { field: fruit } 或 { field: [ orange, lemon, grapefruit ] }
如果想匹配field字段为1个元素的数组,可以将用 $size 操作符将参数设置为1,如下:
db.collection.find( { field: { $size: 1 } } );
$size 操作符不接受值的范围。当要输出基于 fields 字段含不同个数元素的文档时,可以创建一个计数器字段,当fields新增一个元素时则计算器加1。比如:
>db.test.find() {$_id:1,counter:2,color:[red,green]} {$_id:2,counter:1,color:[red]} {$_id:3,counter:3,color:[red,green,blue]}
所以当你要输出color数组元素个数为1到2这个范围内的文档时,这个时候你就不能使用 $size 操作符了,因为它是不接受范围查询的,所以你可以通过 counter 字段来查:
>db.test.find({"counter":{$lte:2,$gte:1}})
当 $_id 为1的文档 color 数组新增一个元素时,这时候counter计算器也要进行修改,counter的值就是color数组元素的总个数。
上一篇: Mongodb $elemMatch操作符
下一篇: Mongodb $exists操作符
下一篇: Mongodb $exists操作符