MongoDB 聚合结果为数组

Ade*_*del 0 mongodb

我做了一些这样的 MongoDB 聚合:

db.first_collection.aggregate(
[
  { $lookup: {
        from:"second_collection",
        localField:"fisrt_id",
        foreignField:"second_id",
        as:"result"
      }
  },
  { $redact: {
        $cond: {
           if: { "$eq": [ "$result", [] ] },
           then: "$$DESCEND",
           else: "$$PRUNE"
         }
       }
  },
]
)
Run Code Online (Sandbox Code Playgroud)

输出是:

{ "_id" : ObjectId("5a32249969e74c004161acc8"), "name" : "n1", "createdAt" : ISODate("2017-12-14T07:13:28.048Z"), "updatedAt" : ISODate("2017-12-14T07:13:28.048Z"), "result" : [ ] }
{ "_id" : ObjectId("5a69a60382e7d3002e6c7c74"), "name" : "n2", "createdAt" : ISODate("2018-01-25T09:40:19.098Z"), "updatedAt" : ISODate("2018-01-25T09:43:46.508Z"), "result" : [ ] }
Run Code Online (Sandbox Code Playgroud)

而不是Objects,我需要一个仅包含 ID 的数组。喜欢:

["5a32249969e74c004161acc8", "5a69a60382e7d3002e6c7c74"]
Run Code Online (Sandbox Code Playgroud)

请让我知道如何?

Rah*_*rma 6

尝试这个

db.getCollection('TEST').aggregate([
    {$group:{
           "_id":"",
            "id":{
                $push : "$_id"
            }
    }},
    {$project:{"id":1,"_id":0}}
])
Run Code Online (Sandbox Code Playgroud)

输出

{
    "id" : [ 
        ObjectId("5a5c99d2a8cb4105acaa6b96"), 
        ObjectId("5a5c99dfa8cb4105acaa6b99")
    ]
}
Run Code Online (Sandbox Code Playgroud)