2015-04-04 24 views
0

我有一个计数器,我想坚持在我的网络服务器上的请求之间,并认为我可以将其粘贴到MongoDB数据库中,因为它已经存在。

我期待大约每1-3秒更新一次这个柜台。

但是,我读到,只要您在MongoDB中保存文档,文档就会被删除并重新插入。我想知道是否同样适用于你做一个$集,而不更新整个文档?

此外,如果是这样的话,我会期望对数据库有任何特定的性能影响吗?

回答

1

使用$set修改现有文档的一个或多个字段的更新只会更新受影响的字段。更新会在原地发生,除非更改导致文档大小增加超出当前分配的大小。发生这种情况时,需要重新定位文档;有效地删除和重新创建文档。

the docs

对于MMAPv1存储引擎,如果更新操作使 文件超过当前分配的记录大小,MongoDB的 重新定位与足够的连续空间的磁盘文件来保存 的文件。需要重定位的更新需要比 更新更长的时间,特别是如果集合有索引时。如果 集合具有索引,则MongoDB必须更新所有索引条目。因此, 对于具有多个索引的集合,此举将影响写入吞吐量。