我是否需要同时更新和更新保存方法?

时间:2014-07-01 12:51:57

标签: performance mongodb rest

我有什么理由不使用update插入文件(通过upsert)吗?

如果没有,为什么还有一个单独的insert方法?

编辑:我很确定性能会有所不同,所以我应该补充一个事实,即我只使用远小于1 mb的小文档。

2 个答案:

答案 0 :(得分:2)

保存意味着插入一个文档。可以在符合第一个参数标准的多个文档中使用更新。

在某些情况下(指定一个唯一的id作为条件,upsert:true,而不是使用multi:true)两者都可以起到同样的作用。

答案 1 :(得分:1)

您可以使用insertupdate(使用upsert选项)和save方法插入新文档。 但是,插入将是插入文档的最快方式。

那是因为insert方法只是将文档添加到集合的末尾。更新方法首先必须找到要更新的文档,然后更新它。

此外,如果集合上有索引,则update命令将需要删除并重新插入索引条目,这比使用insert命令在索引中插入新条目要慢。

Save方法将使用更新或插入命令。如果在文档中未指定_id字段,则会使用insert命令,并在指定_id字段时更新(使用upsert选项)。

然而,在某些情况下,速度差异可能微不足道。您可能应该根据您的预期用例进行测试。