MongoDB下根据数组大小进行查询的方法
2014-04-26 09:40
507 查看
注意:作者使用的mongodb版本为2.4.7。
首先插入测试数据
db.data.insert({name:'a', num:[12,123,22,34,1]});
db.data.insert({name:'b', num:[42,22]});
db.data.insert({name:'c', num:[49]});
键num对应的值是数组。
查询num的数组值具有指定大小的document
最好的方法是使用$size,例如指定大小为2,可以:
不过$size有一个缺陷,就是无法查询某个范围的大小,例如下面的语句是无法按照预期运行的:
复制代码 代码如下: db.data.find({num:{$size:{$gt:2}}}); //错误
官方文档中建议,如果需要查询的数组大小在某个范围,可以另外为每个文档添加一个键来保存当前数组的大小。
如果数组大小是某个范围
另外两种思路,第一个思路是使用$where,例如如果要求数组大小小于3:
这种方法具有很大的灵活性,但是速度会慢一些。
关于$where,请参考官方文档:http://docs.mongodb.org/manual/reference/operator/query/where/。
另外一个比较高效的方法是判断数组中的某个指定索引的元素是否存在,例如如果要求数组大小小于3:
数组大小小于3,就意味着num[2]不存在。
如果要求数组大小大于3,可以:
您可能感兴趣的文章:
相关文章推荐
- MongoDB下根据数组大小进行查询的方法
- Java MongoDB下根据数组大小进行查询的方法
- PHP实现根据数组某个键值大小进行排序的方法
- MongoDB下根据数组大小查询
- python操作mongodb根据_id查询数据的实现方法
- PHP实现根据数组的值进行分组的方法
- js sort方法根据数组中对象的某一个属性值进行排序
- python操作mongodb根据_id查询数据的实现方法
- 将一个数组按照固定大小进行拆分成数组的方法
- js sort方法根据数组中对象的某一个属性值进行排序
- mongodb中简单的根据时间过滤进行查询
- js:数组重排序问题:如何使用sort()方法按数值的大小进行升序或降序排列
- js sort方法根据数组中对象的某一个属性值进行排序
- mongodb 分页查询并 根据传入的经纬度计算计算两点距离进行排序
- Hive 显示分区,根据分区进行查询的方法
- php根据某字段对多维数组进行排序的方法
- 数组与集合的应用之数组排序与查询(使用Sort方法对数组进行排序)
- MongoDB如何对数组中的元素进行查询详解
- php 对2维数组 根据某个键值进行排序的几种方法!
- 根据数组中的某个键值大小进行排序,仅支持二维数组