我第一次在项目中使用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推荐/规定的内容,以及在查询或更新期间是否考虑过该方法。
答案 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?