如何在 MongoDb 的嵌入式数组中查找多个元素

Posted

技术标签:

【中文标题】如何在 MongoDb 的嵌入式数组中查找多个元素【英文标题】:How to look for more than one element in an embedded array in MongoDb 【发布时间】:2017-08-09 14:17:49 【问题描述】:

我有一个mongodb 查询:(在 account='test' 处给我设置)

db.collection_name.find("account" : "test1", settings : 1).pretty();

我得到以下输出:


    "_id" : ObjectId("49830ede4bz08bc0b495f123"),
    "settings" : 
        "clusterData" : 
            "us-south-1" : "cluster1",
            "us-east-1" : "cluster2"
        ,
    ,

我现在正在寻找的是给我account,其中clusterData 在其数组中有多个元素

我只对列出具有 (2) 个或更多元素的帐户感兴趣。

我试过这个:

db.collection_name.find('settings.clusterData.1': $exists: true, account : 1).pretty(); 

它没有返回任何结果。我的查询正确吗?还有其他方法吗?

【问题讨论】:

【参考方案1】:

它不起作用的原因是您的clusterdata 是一个对象,而不是一个数组。我建议将您的数据更改为具有如下两个属性的集群数组,然后它将起作用。


    "_id" : ObjectId("49830ede4bz08bc0b495f123"),
    "settings" : 
        "clusterData" : [
            
                name : "cluster1",
                location : "us-south-1"
            ,
            
                name : "cluster2",
                location : "us-east-1"
            
        ]
    

【讨论】:

感谢您的意见。但是,我没有将其更改为数组的选项。我将数据作为对象。谢谢。 @noober 那我不认为你问的是可能的。你的选择是获取文档并计算键,将文档修改为数组,修改文档以存储数量键或通过键名查询键是否存在。

以上是关于如何在 MongoDb 的嵌入式数组中查找多个元素的主要内容,如果未能解决你的问题,请参考以下文章

mongodb通过多个数组项查找

如何匹配 MongoDB 中嵌入式数组或文档中的字符串?

MongoDB - 查找 - 多个集合 - 结果在一个数组中

MongoDB 中嵌入文档的数组元素的并发更新

Mongodb如何查询内嵌数组的指定元素?

如何通过 mongoose 将多个数组元素推送到 mongodb