如何从mongo db的单个文档中的文档和子文档中获取特定字段

时间:2019-10-10 11:12:01

标签: mongodb

{
    "_id" : 5000758100,
    "lines" : {
        "objId" : 5000758106
    }
},

/* 2 */
{
    "_id" : 5000758100,
    "lines" : {
        "objId" : 5000758107
    }
}

上面是示例文档。 需要获取所有不同的objID值以及文档中的通用_id。

1 个答案:

答案 0 :(得分:0)

以下查询可以为我们提供预期的输出:

db.collection.aggregate([
    {
        $group:{
            "_id":null,
            "ids":{
                $push:"$_id"
            },
            "objIDs":{
                $addToSet:"$lines.objId"
            }
        }
    },
    {
        $project:{
            "_id":0,
            "distinct":{
                $setUnion:["$ids","$objIDs"]
            }
        }
    }
])

数据集:

{ "_id" : 5000758100, "lines" : { "objId" : 5000758106 } }
{ "_id" : 5000758101, "lines" : { "objId" : 5000758107 } }

输出:

{ "distinct" : [ 5000758100, 5000758101, 5000758106, 5000758107 ] }