在我看来,当你创建一个Mongo文档,并且有一个字段{key: value}
,而这个字段有时不会有值时,你有两个 Select :
- 写入
{key: null}
,即在字段中写入空值 - 根本不要在那个文档中存储密钥
这两个选项都很容易查询,一个查询{key : null}
,另一个查询{key : {$exists : false}}
.
我真的想不出这两个选项之间有什么区别会对应用程序场景产生任何影响(除了选项2的存储空间稍小).
有谁能告诉我,有没有什么理由一个人更喜欢这两种方法中的任何一种,为什么?
EDIT
问了这个问题后,我也想到,在这两种情况下,索引的行为可能会有所不同,即可以为选项2创建稀疏索引.