最好在MongoDB中填充空值?

时间:2014-10-20 16:57:27

标签: mongodb

说我有这样的文件:

{
   email: "test@test.com",
   geo:
   {
       lat: null,
       lon: null,
       city: null,
       state: null,
       zip: null
   }
}

我听说有时最好“填充”以后可能会填充的空值,因为这样文档将分配给它的空间正确,不需要移动到更大的空间如果文件增长。

geo设置为null或者我是否更正以包含空地理对象以防将来填充?

1 个答案:

答案 0 :(得分:2)

填充可能是一个好主意,但不是你的方式。

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

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

当您需要某种方法来区分初始化和未初始化文档时,请考虑不添加实际密钥,而是添加单个密钥_reserved: " ",其中虚拟字符串中的字符数是预期的要添加的键值的长度。