我有一個MongoDB的集合,如下所示:更新MongoDB記錄會重寫整個記錄還是僅更新字段?
comment_id (number)
comment_title (text)
score (number)
time_score (number)
final_score (number)
created_time (timestamp)
分數是和整數,這通常用$ INC 1或更新每當有人或票上下該記錄-1。 但time_score更新使用函數相對於時間戳和當前時間和其他因素,如多少(整天通過)和多少(整個星期過去).....等
所以我做$ inc和$直接對數據庫進行分析,但對於time_score,我從db中獲取數據,計算新分數並將其寫回。我擔心的是,如果許多用戶在計算time_score期間遞增「score」字段,那麼當我將time_score寫入db時,它將破壞最後一個score值。
要更清楚地更新Mongo記錄中的特定字段是否會重寫整個記錄或僅更新字段? (假設所有這些字段都被索引)。
這是不準確的 - 當您使用各種運算符(如$ inc)時,只會更改指定的字段。只有當您傳遞完整文檔以進行更新而沒有任何更新操作員時,整個文檔纔會被重寫。 –
實際上,每一個更新操作符都只會修改它應用的字段。覆蓋整個文檔是例外而不是規則,因爲很少有人想要在現實世界中覆蓋整個文檔。 –
你們中的任何人都可以發佈一個鏈接給我,以驗證這是如何完成更新! – Shashank