Mongo DB更新查询性能

时间:2017-02-02 11:24:30

标签: mongodb mongodb-query

我想了解哪些下面的查询在mongo db中进行更新时会更快?我想一次更新几千条记录。

  1. 累积这些记录的对象ID并使用$ in或使用批量更新来触发它们?

  2. 在集合中使用一个或两个字段,这些字段对于那几千个记录来说很常见 - 类似于"其中"在sql中并使用这些字段触发更新。这些字段可能会也可能不会被编入索引。

  3. 我知道在第二种情况下查询将会小得多,因为每一个" _id" (oid)没有积累。累积_ids并使用它们更新文档是否具有任何实际的性能优势?

1 个答案:

答案 0 :(得分:1)

  
    

累积_ids并使用它们来更新文档是否具有任何实际的性能优势?

  

是的,因为MongoDB肯定会使用_id索引(idhack)。

在第二种方法中 - 正如您所观察到的 - 您无法判断索引是否将用于某个字段。

所以答案是:它取决于。

如果您的馆藏有数百万或更多的文件,和/或搜索字段的数量非常大,您应该更喜欢第一种搜索方法。特别是如果id列表大小不小和/或id值相邻。

如果您的收藏非常小并且您可以容忍完整扫描,那么您可能更喜欢第二种方法。

无论如何,您应该使用explain()证明这两种方法。