Добавить только поле из другой коллекции в MongoDB - PullRequest
0 голосов
/ 24 июня 2018

У меня есть две коллекции

A со схемой

{
    a : Array,
    b : ObjectID
}

и B со следующей схемой

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

Я хочу использовать агрегат Монго для добавления новогополе в коллекции B для включения только поиска из коллекции A с использованием b.

Я хочу, чтобы мое значение после агрегирования имело следующую схему:

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

только $ lookup не работает, потому что яЯ не хочу весь объект, а также объединение удалит _id и объединит другие, которые я не хочу.

1 Ответ

0 голосов
/ 24 июня 2018

Я отвечаю на это сам после решения этого.

Это можно сделать в виде последовательности операций следующим образом:

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

Более эффективные ответы будут приняты

...