在MongoDB中仅添加另一个集合中的字段

时间:2018-06-24 14:17:39

标签: mongodb mongoose mongodb-query aggregate

我有两个收藏夹

具有架构的

{
    a : Array,
    b : ObjectID
}

和B具有以下架构

{
    x : 'string',
    y : // some object schema
    ...
    b : ObjectID
}

我想使用mongo聚合在集合B中添加一个新字段,以仅包含使用b搜索的集合A中的一个。

我希望聚合后的值具有以下架构:

{
    x : 'string',
    newField : a // array from collection A
    y : // some object schema
    ...
    b : ObjectID
}

仅$ lookup不起作用,因为我不希望整个对象,并且合并也将删除_id并合并其他我不希望的对象。

1 个答案:

答案 0 :(得分:2)

解决后,我自己回答。

这可以通过以下操作流程来完成:

{
    $lookup: {
        from: "A",
        localField: "b",
        foreignField: "b",
        as: "someField"
    }
},
{
    $addFields: {
      newField  : "$someField.a"
    }
},
{
    $unwind: "$newField"
},
{
    $project: {
        someField: 0
    }
}

更有效的答案将被接受