Mongodb update()与findAndModify()性能

时间:2015-07-07 16:41:09

标签: javascript mongodb performance mongoose database

对于不断增长的文档,我可以选择使用update()findAndModify() 在数组字段中插入新元素。但是,findAndModify()将在我的特定应用程序中生成更清晰的代码。但我可以使用update()实现相同的功能,只是更麻烦。

我只是想知道使用update()代替findAndModify()会带来多少性能提升。非常感谢!

1 个答案:

答案 0 :(得分:2)

我使用mongo shell进行了快速测试。对于本文件:

{
   "c" : 50,
   "growingArray" : [ 0 ]
}

我进行了两次测试:

for (i = 1; i < 10000; i++)
{
    db.testids.update( { "c" : 50 }, { $addToSet : { "growingArray" : i } } );
}

在我的中档笔记本电脑上总共 40.926s

findAndModify()版本:

for (i = 1; i < 10000; i++)
{
    db.testids.findAndModify({ query: { "c" : 50 }, update : { $addToSet : { "growingArray" : i } } } );
}

42.445 秒。我平均每次跑五次。

从中取出你的意愿。这个下意识的结论是,在我的特定环境中,findAndModify()有大约3%到4%的开销而没有其他任何事情发生。请记住,findAndModify()获取写锁定,因此您可能会对整个应用程序的性能产生更大的影响。

相关问题