是否可以获取所有更新的值/值,在调用updateOne()后存在差异的情况下
_.each(gameResult, function(gameResult){
bulk.find({"user" : gameResult.user, "section" : gameResult.section , "code" : gameResult.code}).upsert().updateOne(gameResult);
})
想象一下更新之前我在数据库中的值是:
1, 1, 1, 1
gameResult是:
1, 2, 1 , 3
所以我的数据库更新了:1,2,1,3
是否有可能获得所有已更改的值,所以在这里如何获取我的两个对象2和3,因为我在代码中需要它。
最佳答案
您正在寻找findAndModify
。
这将执行更新,同时还从数据库返回现有文档。默认情况下,此方法将在应用更改之前返回文档(可以使用new:true
选项更改此行为)。因此,您可以轻松地将返回的文档与本地文档进行比较,以找到不同之处。
不幸的是,批量操作不支持findAndModify,因此您需要逐个文档地进行操作。