我有一个集合MyCollection
,它基本上由_id
和一个名为comment
的字符串组成。
是这样做的:
for (const obj of inputObjects) {
bulkObjectsToWrite.push({
updateOne: {
filter: { _id: obj._id },
update: {
$set: {
comment: obj.comment
}
}
}
})
}
await MyCollection.bulkWrite(bulkObjectsToWrite)
到目前为止一切顺利。
但是,现在的要求是,应添加commentHistory
,其外观应类似于[{"oldValue": "oldValueOfComment", "newValue": "newValueOfComment"}, ...]
我知道我需要使用$push
来向commentHistory
数组添加新对象,但是我如何访问当前更新的文档的comment
,即它的当前值?
我试过了
$push: {
commentHistory: {
newValue: obj.comment,
oldValue: '$comment',
},
},
字符串$comment
被硬编码地添加,而不是被访问的字段。
(使用 Mongoose 5.12.10和Mongo 4.4.18)
1条答案
按热度按时间7z5jn7bk1#
您需要使用update with aggregate pipeline。
Demo