Агрегированный конвейер MongoDB с проблемой $ out operation

#mongodb #mongodb-query #aggregation-framework

#mongodb #mongodb-запрос #агрегация-фреймворк

Вопрос:

Есть ли способ избежать удаления совпадающих документов при использовании операции «$ out» для той же коллекции, что и агрегированная коллекция?

 db.collection.aggregate([
{
    $group: {
        _id: {
            "foo": "$bar",
            "bar": "$foo"
        }
    }
},
{
    $out: "collection"
}])
 

этот запрос добавит результат в «коллекцию», но удалит совпадающие документы
, когда $out: "test" добавит результат в «тестовую» коллекцию, сохраняя при этом совпадающие документы в «коллекции».

есть ли способ не удалять эти совпадающие документы, если выходная коллекция одинакова?

** $merge нельзя использовать, поскольку он не может выполнять запись в ту же коллекцию в версии 4.2

Комментарии:

1. Использовать data: {$push: "$$ROOT"} на групповом этапе.

2. не сработало. тем не менее, соответствующие документы исчезли после операции

3. В Mongo 4.4 вы можете использовать stage { $unionWith: "collection" }

4. но тогда мне нужно будет запрашивать две коллекции вместо одной. я предпочитаю выполнять два запроса find и update, а затем find с помощью union