Я пытаюсь сделать глубокую копию данных объекта из 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?.