MongoDB文档:空值还是省略对?

时间:2012-11-06 18:17:13

标签: json mongodb

我第一次在项目中使用MongoDB,我不太确定文档中空白/未设置值的推荐方法是什么。当您拥有将来可能具有值的对时,这两种方法中的哪一种更合适:

1)描述字段为空字符串的JSON(并将在以后填充):

{
    "username": "jamies",
    "shortName": "camping",
    "setName": "Camping on Stevens",
    "description": ""
}

2)或者,省略描述字段的JSON(将来会添加):

{
    "username": "jamies",
    "shortName": "camping",
    "setName": "Camping on Stevens"
}

显然第二种方法会节省磁盘空间,但也不会指示哪些值为null。我很想了解Mongo开发人员/ DBA推荐/规定的内容,以及在查询或更新期间是否考虑过该方法。

2 个答案:

答案 0 :(得分:4)

如有疑问

  

从简洁开始。根据测试要求增加其他尺寸。 jeff-atwood

上面的引用是指代码,但它也适用于此处。我可以想到一些情况,你会后悔在将来添加一个空字符串字段。例如。弃用该领域,它不再被使用,令人困惑,只是占用空间。另请参阅MongoDB Docs: Querying and nulls

答案 1 :(得分:1)

一种方法是忽略不适用于所讨论的文档/聚合的字段。像MongoDB这样的文档数据库是模式较少的,并且原生支持它。然后,您可以使用$exists查询运算符。但是,如果您的用例对依赖的查询很重要,那么它就是non-performant and alternate designs are mentioned

另一种方法是使用 null 来表示缺少值。我认为建议使用null而不是添加元素并提供空字符串作为值。这里有一些类似的讨论XML, what is this: null or empty element?