Запрос на глубокое копирование Объектов из 2 коллекций в mongoDB, имеющих одинаковый ключ - PullRequest
2 голосов
/ 27 марта 2019

Я пытаюсь сделать глубокую копию данных объекта из 2 коллекций с помощью запроса к базе данных Mongo.

Пример:

Таблица 1 данные:


 {
    type:"fruits"
    box1:{
    apple:1,
    orange:2
    },
    box2:{
    one:1,
    two:2
    }
 }

Таблица2 данные:


  {
    type:"fruits"
    box1:{
    grapes:3,
    watermelon:4
    },
    box2:{
     three:3
    }
  }

Требуемый вывод


 {
    type:"fruits"
    box1:{
    apple:1,
    orange:2,
    grapes:3,
    watermelon:4
    },
    box2:{
    one:1,
    two:2
    three:3
    }
 }

Я попробовал следующий запрос, используя $ mergeObjects, что приводит к ошибке

db.Table1.aggregate([{
    $lookup: {
            from: "Table2",
            localField: "type",
            foreignField: "type",
                as: "fromItems"
      }
   },
   {
      $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$fromItems", 0 ] }, "$$ROOT" ] } }
   },
   { $project: { fromItems: 0 } }
])

Для вышеприведенного запроса в результате получается следующая ошибка:

```
     assert: command failed: {
        "ok" : 0,
        "errmsg" : "Unrecognized expression '$mergeObjects'",
        "code" : 168,
        "codeName" : "InvalidPipelineOperator"
        } : aggregate failed
        _getErrorWithCode@src/mongo/shell/utils.js:23:13
        doassert@src/mongo/shell/assert.js:13:14
        assert.commandWorked@src/mongo/shell/assert.js:266:5
         DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1215:5
    @(shell):1:1

    Error: command failed: {
        "ok" : 0,
        "errmsg" : "Unrecognized expression '$mergeObjects'",
        "code" : 168,
        "codeName" : "InvalidPipelineOperator"
    } : aggregate failed :
    _getErrorWithCode@src/mongo/shell/utils.js:23:13
    doassert@src/mongo/shell/assert.js:13:14
    assert.commandWorked@src/mongo/shell/assert.js:266:5
    DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1215:5
    @(shell):1:1```

Как я могу сделать глубокую копию Объектов внутри Объекта в запросе БД Mongo?.

...