2015-04-04 23 views
0

我有一個計數器,我想堅持在我的網絡服務器上的請求之間,並認爲我可以將其粘貼到MongoDB數據庫中,因爲它已經存在。

我期待大約每1-3秒更新一次這個櫃檯。

但是,我讀到,只要您在MongoDB中保存文檔,文檔就會被刪除並重新插入。我想知道是否同樣適用於你做一個$集,而不更新整個文檔?

此外,如果是這樣的話,我會期望對數據庫有任何特定的性能影響嗎?

回答

1

使用$set修改現有文檔的一個或多個字段的更新只會更新受影響的字段。更新會在原地發生,除非更改導致文檔大小增加超出當前分配的大小。發生這種情況時,需要重新定位文檔;有效地刪除和重新創建文檔。

the docs

對於MMAPv1存儲引擎,如果更新操作使 文件超過當前分配的記錄大小,MongoDB的 重新定位與足夠的連續空間的磁盤文件來保存 的文件。需要重定位的更新需要比 更新更長的時間,特別是如果集合有索引時。如果 集合具有索引,則MongoDB必須更新所有索引條目。因此, 對於具有多個索引的集合,此舉將影響寫入吞吐量。