$ lookup在$ group之后嵌套了外部ID

时间:2019-11-12 15:37:41

标签: mongodb mongodb-query

我想用$ lookup之后的真实用户属性替换外部用户ID,我的数据是

"comments" : [
        {
            "user_Id" : ObjectId("aaa"),
            "content" : "aaaa",
            "rep" : [
                {
                    "user_Id" : ObjectId("bbb"),
                    "comment" : "bbbb",
                },
                {
                    "user_Id" : ObjectId("ccc"),
                    "comment" : "cccc",
                }
            ]
        },
        {
            "user_Id" : ObjectId("ddd"),
            "content" : "ddd",
            "rep" : [ ]
        }
    ]

用户集合:

"users" : [
    {
        "_id" : ObjectId("aaa"),
        "name" : "user1",
        "email" : "test1@test.com",
    },
    {
        "_id" : ObjectId("bbb"),
        "username" : "user2",
        "email" : "test2@test.com",
      }
]

我想存档的内容:

"comments" : [
    {
        "user" : {
            "_id" : ObjectId("aaa"),
            "name" : "user1",
            "email" : "test1@test.com",
            }
        "content" : "aaaa",
        "rep" : [
            {
                "userId" : {
                     "_id" : ObjectId("bbb"),
                     "username" : "user2",
                     "email" : "test2@test.com",
                },
                "comment" : "bbbb",
            },
            {
                "user" : {
                           "_id" : ObjectId("aaa"),
                           "name" : "user1",
            "email" : "test1@test.com",
            },
                "comment" : "cccc",
            }
        ]
    },
    {
        "user" : {
        "_id" : ObjectId("bbb"),
        "username" : "user2",
        "email" : "test2@test.com",
      },
        "content" : "ddd",
        "rep" : [ ]
    }
]

现在,我设法从外部ID获取用户信息,但是我也疯狂地试图将用户对象也包含在答复中,我试图在分组之后进行分组,但无所事事,这就是我所做的:

db.pages.aggregate([
    { 
        $match: { _id: ObjectId('5db599f3fffdee1c822269e0b3') }
    },
    {
        $project: {
            comments: 1,
        }
    },
    { $unwind: '$comments' },
    {
        $lookup:
            {
                from: 'users',
                localField: 'comments.user_Id',
                foreignField: '_id',
                as: 'us'
            }
    },
    { $unwind: '$us' },
    {
        $group: {
            _id: {
                user: {
                    id: '$us._id',
                    name: '$us.username',
                    email: '$us.email',
                },
                comments: {
                    comment: '$comments.comment',
                    rep: '$comments.rep'               
                },
            }
        }
    }
]).pretty()

0 个答案:

没有答案