最好在MongoDB中填充空值?

最好在MongoDB中填充空值?,mongodb,Mongodb,假设我有这样一份文件: { email: "test@test.com", geo: { lat: null, lon: null, city: null, state: null, zip: null } } 我听说,有时最好“填充”以后可能填充的空值,因为这样文档将有正确的空间分配给它,并且在文档增长时不需要移动到更大的空间 将geo设置为null更好,还是我正确地包含空的geo对象以防将来填充它

假设我有这样一份文件:

{
   email: "test@test.com",
   geo:
   {
       lat: null,
       lon: null,
       city: null,
       state: null,
       zip: null
   }
}
我听说,有时最好“填充”以后可能填充的空值,因为这样文档将有正确的空间分配给它,并且在文档增长时不需要移动到更大的空间


geo
设置为
null
更好,还是我正确地包含空的geo对象以防将来填充它?

填充可能是个好主意,但不是您这样做的方式

MongoDB是一个动态类型的数据存储。这意味着每个字段的大小仅为键的长度加上值的长度。BSON
nul
值只占用一个字节(有关更多信息,请参阅)。这意味着您将为键保留空间,但不为值保留空间。当您稍后用实际数据替换
null
s时,该数据可能会大得多。这意味着您的文档仍将增长,并且可能仍会超出触发重新分配的保留空间

要有效填充,请使用与预期数据一样大的值填充


当你需要一种方法来区分初始化和非初始化文档时,考虑不添加实际的键,而是添加一个单一的键<代码>保留:“伪字符串中的字符数是键的期望长度<强>和要添加的值。非常有趣。这实际上很有道理。@AbeMiessler抱歉,您的编辑无效。javascript类型

null
由BSON类型
nul
和一个l表示。我故意做出这种区分。在讨论存储分配时,重要的是要记住BSON(MongoDB的内部格式)不是JSON。是的,只是在回滚它时查找了它。也很高兴知道:)