Как вернуть входной документ в $ facet - PullRequest
0 голосов
/ 04 февраля 2020

Я ищу умный способ вернуть входной документ в агрегацию $facet. Примерно так:

db.collection.aggregate([
   { <pipeline stage 1> },
   { <pipeline stage 2> },
   {
      $facet:
         {
            outputField1: [ output of <pipeline stage 2> ],
            outputField2: [ { <pipeline stage 3> } ]
         }
   }
])

Я пробовал что-то вроде outputField1: [ $$CURRENT ], но не сработало.

На самом деле я нашел два обходных пути, но мне интересно, есть ли более разумный способ сделать это.

db.collection.aggregate([
   { <pipeline stage 1> },
   {
      $facet:
         {
            outputField1: [ { <pipeline stage 2> } ],
            outputField2: [ { <pipeline stage 2> }, { <pipeline stage 3> } ]
         }
   }
])


db.collection.aggregate([
   { <pipeline stage 1> },
   { <pipeline stage 2> },
   {
      $facet:
         {
            outputField1: [ { $unset: "a_dummy_field_which_does_not_exist" } ],
            outputField2: [ { <pipeline stage 3> } ]
         }
   }
])

1 Ответ

1 голос
/ 04 февраля 2020

Вы также можете сделать это { $match: {} }, чтобы вернуть текущий документ как:

{
    $facet:
    {
        outputField1: [{ $match: {} }],
        outputField2: [ { <pipeline stage 3> } ] } } }]
    }
}
...