我在nodejs中对mongodb进行了批量更新 我正面临以下情况
用户可以一次更新20-30个字段,可能他不全部更新,他可能更改1或2或5或全部,我想确切地知道哪些字段,即其值已被new覆盖。值。
我需要知道这一点,因为每个字段都具有权重,如果它们更新特定字段,那么我必须重新计算所有列的权重并将其分配给用户
例如,如果
User.update({_id: user_id},{ $set : {key1:value,key2:value,key3:value... }})
现在假设key3被覆盖,但是key1和key2保持不变, 所以我想知道key3已经被覆盖。 我该怎么办?
答案 0 :(得分:1)
如果您使用findOneAndUpdate函数进行更新,则可以在更新之前检索文档,使用该检索值,您可以将其与给定的文档进行比较以找出已更新的字段。 更新功能将如下所示:
db.collection("Collection Name").findOneAndUpdate({"Find Query"},
{$set: {"Update Query"}},
{returnOriginal: true},
(err, res) => {
//... Some codes for comparing docs
});
“ returnOriginal”选项使查询在更新操作之前返回更新的文档。