gpt4 book ai didi

mongodb - MongoDB $set 是只写字段还是整个文档?

转载 作者:可可西里 更新时间:2023-11-01 10:04:28 25 4
gpt4 key购买 nike

我相信一个字段上的 $inc 只改变了那个字段而不会重写整个文档。

我的问题是字符串字段(假设字符串长度相同)上的 $set 是否具有相同的行为方式。还是整个文档都被重写了?

推而广之,副本集是复制整个记录还是仅复制增量?

我知道这是一个微优化问题。

最佳答案

这取决于。如果磁盘上分配的 block 中有空间,它将只写入到位。如果没有空间,即文档超出了当前分配的空间,MongoDB 会分配一个新空间并将文档移动到这个新位置。

如果你想尽量减少文档移动,你可以设置一个填充因子。然后 MongoDB 通过添加此 paddingFactor 调整记录分配的大小,以便文档有增长的空间。更多关于 Record Padding .

关于副本集:副本集使用oplog(操作日志)进行操作。 Oplog 是一个 capped collection(固定大小的集合,当它达到其最大大小时会自动覆盖其最旧的条目),它保留修改数据库中数据的所有操作的日志.辅助节点以异步方式复制和应用这些操作。任何副本集成员都可以从任何其他副本集成员的 oplog 中导入条目。

这意味着当您插入一个新文档时,确切的更新操作将被复制到其他副本集成员并单独执行。涉及同一文档的任何后续更新都会发生同样的事情。这是关于 MongoDB Replica Set Oplog 的信息.

关于mongodb - MongoDB $set 是只写字段还是整个文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22374126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com