最好在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是一个动态类型的数据存储。这意味着每个字段的大小仅为键的长度加上值的长度。BSONnul
值只占用一个字节(有关更多信息,请参阅)。这意味着您将为键保留空间,但不为值保留空间。当您稍后用实际数据替换null
s时,该数据可能会大得多。这意味着您的文档仍将增长,并且可能仍会超出触发重新分配的保留空间
要有效填充,请使用与预期数据一样大的值填充
当你需要一种方法来区分初始化和非初始化文档时,考虑不添加实际的键,而是添加一个单一的键<代码>保留:“伪字符串中的字符数是键的期望长度<强>和要添加的值。非常有趣。这实际上很有道理。@AbeMiessler抱歉,您的编辑无效。javascript类型
null
由BSON类型nul
和一个l表示。我故意做出这种区分。在讨论存储分配时,重要的是要记住BSON(MongoDB的内部格式)不是JSON。是的,只是在回滚它时查找了它。也很高兴知道:)