MongoDB 3.2 Эквивалент стадии $ mergeObjects - PullRequest
0 голосов
/ 26 июня 2018

Я использую оператор $ facet в моем представлении MongoDB для запуска двух конвейеров с одинаковыми данными. На заключительном этапе мне нужно объединить эти два вместе. Если бы мы работали с Mongo 3.6, я бы использовал оператор $ mergeObjects для этого. Тем не менее, мы используем версию 3.2, где $ mergeObjects недоступен. Итак, я пытаюсь выяснить, что эквивалент 3,2 это будет:

{
  $replaceRoot: {
    newRoot: {
      $mergeObjects: ["$pipelineResults", {
        totalCount: "$totalCount.value"
      }]
    }
  }
}

Я пытался использовать $ project, например:

{
  newRoot: {
    $project: {
      "$pipelineResults": 1,
      totalCount: {
        "$totalCount.value": 1
      }
    }
  }
}

... но это не работает. Может быть, мне нужно сочетание $ group и $ project? Как бы это выглядело в 3.2?

1 Ответ

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

Если у вас 3.2, то вы также не можете использовать $mergeObjects (доступно начиная с 3.4). На самом деле эти два оператора являются просто удобным способом проецирования, поэтому вы можете заменить их на $project, но недостатком является то, что вы должны указать все свойства объекта, такие как:

{
    $project: {
        fieldOne: "$pipelineResults.fieldOne",
        fieldTwo: "$pipelineResults.fieldTwo",
        //...
        totalCount: "$totalCount.value"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...