node.js - 如何检查更新的文档是否真的被修改了?
问题描述
我有一个“项目”集合,这是集合中的示例文档:
{ "id": 0, "price": 23.55 }
我正在更新编写一个更新项目价格的查询,但想检查价格字段是否真的修改了。
例如,以下查询是合法的,但实际上并不修改文档。
db.collection('items').updateOne(
{ id: 0 },
{ $set: { price: 23.55 } }
);
有什么方法可以实现吗?
解决方案
updateOne
将返回nModified
您可以了解文档是否被修改。
{ "n": 1, "nModified": 1 }
https://mongodb.github.io/node-mongodb-native/3.6/api/Collection.html#updateOne
https://mongodb.github.io/node-mongodb-native/3.6/api/Collection.html#~updateWriteOpCallback
https://mongodb.github.io/node-mongodb-native/3.6/api/Collection.html#findOneAndUpdate
使用findOneAndUpdate
设置returnOriginal
为 false,您将在回调中获得更新的文档。
const options = { returnOriginal: false; } // to return the updated document
findOneAndUpdate(filter, update, options, callback)
https://mongodb.github.io/node-mongodb-native/3.6/api/Collection.html#~findAndModifyCallback
从 findAndModify 命令返回的文档。如果没有找到文档,默认情况下 value 将为 null (returnOriginal: true),即使文档被更新;如果 returnOriginal 为 false,则在这种情况下将返回插入的文档。
推荐阅读
- android - 模块“moduleastronomie”的清单中缺少强制性标题
- php - 将 wordpress 循环限制为 10 或 20 个帖子
- python - 如何根据特定国家/地区获取地方的纬度和经度?
- c# - 如何解决多依赖 Web 应用程序的依赖问题?
- mongodb - 使用集合关系图设计 mongo db 模式时如何表示多态模式
- python - 在 numba 中初始化元组的返回列表
- firebase - firebase 功能说“功能没有正确部署。”
- python - Python:如何在迭代列表时从列表中删除元素而不跳过未来的迭代
- amazon-web-services - 在 AWS 上创建 AMI 是否需要重启原始机器?
- python - 如何在 HTML 轮播中使用 Jinja