2012-11-29 49 views
1

我的问题与标题中一样清楚。当请求到我的服务中更新mongoDb中的相关记录时,我们使用“save”方法。确定mongodb保存方法是否确实更新记录

但是,我想了解save方法是否真的更新记录。

换句话说,我想知道要保存的内容是否与mongoDb中的现有内容相同。因此,即使执行保存方法没有任何错误,是否有可能了解它是否真的更新?

在此先感谢

+0

您使用的是什么服务器端语言和驱动程序? – Sammaye

+0

你为什么想知道这个?正如我的回答所说 - 没有办法知道如果没有文档比较,新旧文档是否相同。无论他们是否是,写总是发生。 –

+0

哦,在这种情况下,您需要观看此视频...... http://www.youtube.com/watch?v=b2F-DItXtZs – raffian

回答

1

有几种方法可以检查此问题。

第一个是调用Save之后,调用getLastError方法。在控制台内,这只是db.getLastError()。

这会告诉你在上次操作过程中是否发生错误。更多的细节可以在te地址http://docs.mongodb.org/manual/core/write-operations/#write-concern找到。

另一种方法是调用findAndModify,这将允许您更新文档并获取更新的文档。 http://docs.mongodb.org/manual/reference/command/findAndModify/

这两个都可以在所有的官方驱动程序。

+0

这不会告诉他更新是否不必要。他不问是否更新发生,这听起来像他想知道它是否引入了任何新数据... –

+0

@AsyaKamsky使用findAndModify返回原始文档将允许他们查看文档是否更新非常容易。 – SCB

+1

只要他们记住物理上的写作发生了无论 - 他们可以通过比较文档的新版本和新版本来检查它是否是无用的写入。 –

1

保存方法总是写入记录。

在Mongo中没有写入不会发生的情况,因为正在保存的记录与已经存在的记录相同。写入操作只会发生并用新数据“覆盖”现有数据(恰好相同)。

你可以告诉的唯一方法是通过比较新旧文件 - 这是很多额外的工作。

+0

谢谢respnnse。实际上,我想知道哪种方法是理解正在更新的数据是否与现有的AFTER写入操作完全相同的有效方法。是否有任何方法(如getLastError方法假设它可能会给我比较或任何其他线索)。 – Javatar

+0

它可能是findAndModify - 它默认返回文档的以前(现在被覆盖)的版本。然后,您可以将其与您刚刚更新为的文档进行比较。 –

相关问题