如何确定MongoDB更新期间文档是否实际更改

时间:2016-08-18 21:17:59

标签: node.js mongodb mongoose updates

我正在使用NodeJS的Mongoose驱动程序。我有一个非常简单的更新调用,其目的是将外部会议源同步到我的数据库:

collection.update({ meeting_id: doc.meeting_id}, newDoc, {upsert:true})

返回的对象确定是否发生了更新或插入。这非常有效。我的问题是我必须确定是否发生了实际的变化。当您使用自身更新文档时,MongoDB会以与更改所有字段完全相同的方式处理此文档。

所以我的问题是:有什么好的方法可以判断是否有任何改变?我可以搜索每个文档,然后手动比较每个字段,但这似乎是一个糟糕(和缓慢)的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以使用findAndModify,与更新相比,它将返回更新的结果,而更新将返回没有更新的记录。

collection.findAndModify(
    { meeting_id: doc.meeting_id},
    newDoc,
    { new: true },
    function (err, documents) {
        res.send({ error: err, affected: documents });

    }
);