MongoDB:一个$set会导致文档的删除/插入



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

我希望这个计数器大约每1-3秒更新一次。

然而,我读到,每当您在MongoDB中保存文档时,文档都会被删除并重新插入。我想知道,当你在不更新整个文档的情况下进行$集时,这是否也适用?

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

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

来自文档:

对于MMAPv1存储引擎,如果更新操作导致文档超过当前分配的记录大小,MongoDB重新定位磁盘上的文档,使其具有足够的连续空间文件。需要重新定位的更新所需时间超过没有的更新,特别是在集合具有索引的情况下。如果集合有索引,MongoDB必须更新所有索引项。因此对于具有许多索引的集合,移动将影响写入吞吐量

最新更新