主页 > 知识库 > MongoDB下根据数组大小进行查询的方法

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

热门标签:地方门户网站 呼叫中心市场需求 铁路电话系统 网站排名优化 AI电销 服务外包 Linux服务器 百度竞价排名

注意:作者使用的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 lt; 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} })

您可能感兴趣的文章:
  • MongoDB中多表关联查询($lookup)的深入讲解
  • Mongodb实现的关联表查询功能【population方法】
  • MongoDB各种查询操作详解
  • MongoDB查询操作限制返回字段的方法
  • PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例
  • MongoDB导出查询结果到文件例子
  • MongoDB如何对数组中的元素进行查询详解
  • MongoDB查询技巧总结
  • MongoDB查询性能优化验证及验证
  • mongodb实现同库联表查询方法示例
  • MongoDB的基础查询和索引操作方法总结
  • MongoDB多表关联查询操作实例详解

标签:黄山 湘潭 湖南 仙桃 崇左 兰州 铜川 衡水

巨人网络通讯声明:本文标题《MongoDB下根据数组大小进行查询的方法》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266