Как получить все поля родительского документа? - PullRequest
0 голосов
/ 30 апреля 2019

Я пытался получить все поля родительского документа, используя $ group , но он отправлял только определенные поля.

Другой вопрос.Как получить все поля родительского документа, используя '$ project'?

Коллекция " Возможность "
Документ № 1

{
    "_id" : ObjectId("5c42b737cd94891a57fbf33e"),
    "accountId" : [
         ObjectId("5c29f198b248d845931a1830"),
         ObjectId("5c29f198b248d845931a1831"),
    ]
    "name" : "OppNewTest01",
    "value" : 10000,
    "status" : "open",
}

Коллекция " Учетная запись"
Документ № 1

{        
     "_id" : ObjectId("5c29f198b248d845931a1830"),
     "name" : "MyTestAcc",
     "phone" : "7845124578",
}

Мой запрос MongoDB,

con.collection('opportunity').aggregate([
    {
        $unwind: "account"
    },
    {
        $lookup: {
            from: 'account',
            localField: 'accountId',
            foreignField: '_id',
            as: 'accounts',
        },
    },
    {
        $unwind: '$accounts'
    },
    {
        $group: {
            "_id": "$_id",
            "account": { "$push": "$accounts" }
        }
    },
    ]).toArray((err, res) => {
        cbFun(res, err);
});

Вывод указанного выше запроса,

{
    "_id" : "5c42b737cd94891a57fbf33e",
    "account": [
         {        
            "_id" : ObjectId("5c29f198b248d845931a1830"),
            "name" : "MyTestAcc",
            "phone" : "7845124578",
         },
         {        
            "_id" : ObjectId("5c29f198b248d845931a1831"),
            "name" : "MyTestAcc1",
            "phone" : "7845124579",
         },
    ]
}

Я хочу получить вывод ниже,

{
    "_id" : "5c42b737cd94891a57fbf33e",
    "accountId" : [
           ObjectId("5c29f198b248d845931a1830"),
           ObjectId("5c29f198b248d845931a1831"),
    ],
    "name" : "OppNewTest01",
    "value" : 10000,
    "status" : "open",
    "account": [
         {        
            "_id" : ObjectId("5c29f198b248d845931a1830"),
            "name" : "MyTestAcc",
            "phone" : "7845124578",
         },
         {        
            "_id" : ObjectId("5c29f198b248d845931a1831"),
            "name" : "MyTestAcc1",
            "phone" : "7845124579",
         },
    ]
}

Я попытался получить вывод выше, но не получил.

1 Ответ

1 голос
/ 30 апреля 2019

Вы просто теряете эти данные, когда $ group, сохраняете эти поля на этом этапе, чтобы сохранить их.

    {
        $group: {
            "_id": "$_id",
            "account": { "$push": "$accounts" },
            value: {$first: "$value"},
            status: {$first: "$status},
            name: {$first: "$name"},
            accountId: {$push: "$accountId},
        }
    }

EDIT:
[
    {
        $group: {
            "_id": "$_id",
            "accounts": { "$push": "$accounts" },
            "doc": {$first: "$$ROOT"},
        }
    },
    {
        $addFields: {
              "doc.accounts" :"$accounts"
        }
     }
]
...