我正在使用NodeJS的Mongoose驱动程序。我有一个非常简单的更新调用,其目的是将外部会议源同步到我的数据库:
collection.update({ meeting_id: doc.meeting_id}, newDoc, {upsert:true})
返回的对象确定是否发生了更新或插入。这非常有效。我的问题是我必须确定是否发生了实际的变化。当您使用自身更新文档时,MongoDB会以与更改所有字段完全相同的方式处理此文档。
所以我的问题是:有什么好的方法可以判断是否有任何改变?我可以搜索每个文档,然后手动比较每个字段,但这似乎是一个糟糕(和缓慢)的解决方案。
答案 0 :(得分:0)
您可以使用findAndModify,与更新相比,它将返回更新的结果,而更新将返回没有更新的记录。
collection.findAndModify(
{ meeting_id: doc.meeting_id},
newDoc,
{ new: true },
function (err, documents) {
res.send({ error: err, affected: documents });
}
);