是否可以获取所有更新的值/值,在调用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,因此您需要逐个文档地进行操作。

09-17 20:22