【问题标题】:How to look for more than one element in an embedded array in MongoDb如何在 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(); 

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

【问题讨论】:

    标签: sql arrays mongodb mongodb-query


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的意见。但是,我没有将其更改为数组的选项。我将数据作为对象。谢谢。
    • @noober 那我不认为你问的是可能的。你的选择是获取文档并计算键,将文档修改为数组,修改文档以存储数量键或通过键名查询键是否存在。
    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 2022-06-11
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    相关资源
    最近更新 更多