简要咨询咨询QQ网站导航网站搜索手机站点联系我们设为首页加入收藏 

MongoDB下根据数组大小进行查询的方法

来源:易贤网   阅读:2855 次  日期:2014-05-14 18:16:48

温馨提示:易贤网小编为您整理了“MongoDB下根据数组大小进行查询的方法”,方便广大网友查阅!

这篇文章主要介绍了MongoDB下根据数组大小进行查询的方法,分别实现了指定大小的数组和某个范围的数组,需要的朋友可以参考下

注意:作者使用的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,可以:

代码如下:db.data.find({num:{$size:2}})

不过$size有一个缺陷,就是无法查询某个范围的大小,例如下面的语句是无法按照预期运行的:

复制代码 代码如下:db.data.find({num:{$size:{$gt:2}}}); //错误

官方文档中建议,如果需要查询的数组大小在某个范围,可以另外为每个文档添加一个键来保存当前数组的大小。

如果数组大小是某个范围

另外两种思路,第一个思路是使用$where,例如如果要求数组大小小于3:

代码如下:

db.data.find({ $where: "this.num.length < 3" })

这种方法具有很大的灵活性,但是速度会慢一些。

关于$where,请参考官方文档:http://docs.mongodb.org/manual/reference/operator/query/where/。

另外一个比较高效的方法是判断数组中的某个指定索引的元素是否存在,例如如果要求数组大小小于3:

代码如下:

db.data.find({ "num.2": {$exists:0}})

数组大小小于3,就意味着num[2]不存在。

如果要求数组大小大于3,可以:

代码如下:

db.data.find({ "num.3": {$exists:1} })

更多信息请查看IT技术专栏

更多信息请查看数据库
点此处就本文及相关问题在本站进行非正式的简要咨询(便捷快速)】     【点此处查询各地各类考试咨询QQ号码及交流群
上一篇:MongoDB Remove函数的3个常见用法
下一篇:PostgreSQL安装和简单使用
易贤网手机网站地址:MongoDB下根据数组大小进行查询的方法
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!