【问题标题】:how to count number of keys in embedded mongodb document如何计算嵌入式mongodb文档中的键数
【发布时间】:2017-08-12 15:39:55
【问题描述】:

我有一个 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"
        },
    },

我现在正在寻找的是给我clusterData 拥有多个密钥的帐户。

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

我试过这个:(但这不起作用

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

这可能与当前的数据结构有关吗?我没有重新设计此架构的选项。

【问题讨论】:

标签: sql mongodb mongodb-query


【解决方案1】:

您的 clusterData 字段不是数组,这就是为什么您不能只过滤它拥有的元素数量的原因。但是,有一种方法可以通过聚合框架获得您想要的东西。试试这个:

db.collection_name.aggregate({
    $match: {
        "account" : "test1"
    }
}, {
    $project: {
        "settingsAsArraySize": { $size: { $objectToArray: "$settings.clusterData" } },
        "settings.clusterData": 1
    }
}, {
    $match: {
        "settingsAsArraySize": { $gt: 1 } 
    }
}, {
    $project: {
        "_id": 0,
        "settings.clusterData": 1
    }
}).pretty();

【讨论】:

    猜你喜欢
    • 2021-08-28
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多