我有一个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