【发布时间】:2014-02-17 07:44:25
【问题描述】:
查看 capped collections 在 MongoDB 中的使用情况,我想到了以下语句:
"您可以在插入集合后更新文档。但是,这些更新 不能导致文档增长。如果更新操作导致文档 超出其原始大小,更新操作将失败。”
所以这本身听起来很合理,如果没有完全解释原因的话。它让我思考,“如果我不希望文档增长,但可能添加更多信息(即:$push 到数组),那么将文档填充到我的预期大小会有什么问题。”
所以我的前提再一次听起来很合理(无论如何对我来说),直到从FAQ on padding阅读这个片段。
警告不要在有上限的集合中手动填充文档。应用手册 填充到上限集合中的文档可能会破坏复制。此外,填充 如果您重新同步 MongoDB 实例,则不会保留。
这又引发了我的问题,“为什么会这样?”或者说具体点:
为什么要在这种无用的“破坏复制”中填充上限集合中的文档?
文档中是否有遗漏部分说明了明显的原因?或者这只是封顶系列内部运作的“黑暗魔法”? (可能与“不保留填充”部分有关)
或者这只是非常悲观,实际上没有理由你不能以这种方式填充? (至少在最近的版本中)。
如果有人能解释为什么这些陈述是正确的,我会很高兴。
P.S 虽然这不是严格编程,但我认为手动填充技术是一种编程技术,因此将问题留在这里.
【问题讨论】:
-
我相信这是因为辅助节点不知道您的手动填充。它不会出现在 oplog 中