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

 更新时间:2014年04月26日 09:40:57   作者:  
这篇文章主要介绍了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} })

相关文章

  • MongoDB教程之数据操作实例

    MongoDB教程之数据操作实例

    这篇文章主要介绍了MongoDB教程之数据操作实例,本文讲解了批量插入、数据库清除、数据更新、修改器、数组修改器、upsert等内容,需要的朋友可以参考下
    2015-05-05
  • MongoDB数据库去重函数Distinct用法实例

    MongoDB数据库去重函数Distinct用法实例

    在MongoDB中可以使用distinct()方法对变量进行去重操作,distinct()方法是用于返回指定字段的唯一值的操作,这篇文章主要给大家介绍了关于MongoDB数据库去重函数Distinct用法的相关资料,需要的朋友可以参考下
    2024-06-06
  • MongoDB入门教程之分片技术详解

    MongoDB入门教程之分片技术详解

    这篇文章主要介绍了MongoDB入门教程之分片技术详解,分片是mongodb中的另一种集群技术,需要的朋友可以参考下
    2014-08-08
  • MongoDB在不同主机间复制数据库和集合的教程

    MongoDB在不同主机间复制数据库和集合的教程

    MongoDB自带了clone一族JavaScript函数来进行数据的复制,这里我们总结了MongoDB在不同主机间复制数据库和集合的教程,列举出了一些主从复制操作中常用的重要函数:
    2016-07-07
  • Centos 7下Mongodb开机无法自启动的解决方法

    Centos 7下Mongodb开机无法自启动的解决方法

    这篇文章主要介绍了Centos 7下Mongodb开机无法自启动的解决方法,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • 详解mongodb 主从配置

    详解mongodb 主从配置

    我研究过的nosql,memcache,redis,mongodb都是支持分布式的,生产环境中用过memcache,redis,性能稳定。mongodb是最接近关系型数据库的,不用花很多时间去构建数据库模型,将来我会用mongodb,看一下主从配置
    2014-07-07
  • MongoDB数据查询方法干货篇

    MongoDB数据查询方法干货篇

    查询操作在我们日常操作数据库的时候是必不可少的一部分,最近有些空闲时间,所有就将MongoDB数据查询的一些方法技巧总结了处理,这篇文章主要介绍了MongoDB数据查询的相关资料,需要的朋友可以参考借鉴,一起来看看吧。
    2017-05-05
  • MongoDB 的批量查找符号的方法

    MongoDB 的批量查找符号的方法

    本文介绍了MongoDB中常用的查询操作符,包括`$in`、`$nin`、`$or`、`$and`以及范围查询操作符(`$gt`、`$lt`、`$gte`、`$lte`),并提供了相应的语法和代码示例,帮助用户快速掌握这些操作符的使用方法,感兴趣的朋友一起看看吧
    2025-02-02
  • 阿里云服务器安装mongodb的方法

    阿里云服务器安装mongodb的方法

    这篇文章主要介绍了阿里云服务器安装mongodb的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • mongodb数据库基础知识之连表查询

    mongodb数据库基础知识之连表查询

    这篇文章主要给大家介绍了关于mongodb数据库基础知识之连表查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mongodb具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06

最新评论