【发布时间】:2019-02-20 06:35:07
【问题描述】:
我正在使用mongodb 在某个集合中插入和更新一些文档。当我更新文档时,我只想获取修改后的字段。我可以通过使用 returnOriginal 选项进行更新来获取完整的新文档(包括修改的字段),但它提供了所有属性。
来自docs:
返回原件 |可选 |为 false 时,返回更新后的文档 而不是原来的。默认为真
我的代码是:
let result = await db.myCollection.findOneAndUpdate(
{_id: ObjectId('5a2451399054bf000453c332')},
data,
{returnOriginal: true}
);
其中data可以是一个字段,也可以是多个字段,例如:
let data = {field1: 'newValue1'};
或
let data = {field1: 'newValue1', field2: 'newValue2'};
我只想获取这些字段,但更新的结果是给了我整个对象,包括 _id 属性和所有其他属性,即使它们没有被修改。
我正在寻找的是一种简单的方法(mongodb 函数或属性将是理想的)仅获取修改后的字段,如果有这种方法,而不是比较两个对象(之前和之后)。
"mongodb": "^3.1.6"
【问题讨论】:
-
遗憾的是,MongoDB 没有这样的功能,您需要使用 lodash 之类的实用程序库进行比较或编写自己的自定义函数来检查前后文档
标签: javascript mongodb node-mongodb-native