说我有这样的文件:
{
email: "test@test.com",
geo:
{
lat: null,
lon: null,
city: null,
state: null,
zip: null
}
}
我听说有时最好“填充”以后可能会填充的空值,因为这样文档将分配给它的空间正确,不需要移动到更大的空间如果文件增长。
将geo
设置为null
或者我是否更正以包含空地理对象以防将来填充?
答案 0 :(得分:2)
填充可能是一个好主意,但不是你的方式。
MongoDB是一个动态类型的数据存储区。这意味着每个字段只会占用密钥长度加上值的长度。 BSON nul
值仅占用一个字节(有关详细信息,请参阅the BSON specification)。这意味着您为键保留空间,但不为值保留空间。当您稍后用实际数据替换null
时,该数据可能会更大。这意味着您的文档仍将增长,并且可能仍会超出触发重新分配的保留空间。
要有效填充,请使用与预期数据一样大的值填充。
当您需要某种方法来区分初始化和未初始化文档时,请考虑不添加实际密钥,而是添加单个密钥_reserved: " "
,其中虚拟字符串中的字符数是预期的要添加的键和值的长度。