在我看来,当您创建 Mongo 文档并有一个字段 {key: value}
有时不会有值时,您有两个选择:
- 写入
{key: null}
即在字段中写入 null 值 - 根本不要将 key 存储在该文档中
这两个选项都很容易查询,一个是查询 {key : null}
,另一个是查询 {key : {$exists : false}}
。
我真的想不出这两个选项之间有什么区别会对应用场景产生任何影响(除了选项 2 的存储空间稍少)。
谁能告诉我是否有任何理由让人们更喜欢这两种方法中的任何一种,为什么?
编辑
在问了这个问题后,我还想到索引在这两种情况下的行为可能不同,即可以为选项 2 创建一个稀疏索引。
最佳答案
确实,您还有第三种可能性:
key: ""
(空值)
你忘记了关于空值的特殊性。
查询
key: null
将检索所有 key 为 null 或的文档,其中 key 不存在。
当对 $exists:false
的查询将只检索字段键不存在的文档。
要回到您的确切问题,这取决于您的查询和数据代表的内容。 如果您需要保留它,例如,用户设置了一个值然后取消设置它,您应该将该字段保留为 null 或空。如果您不需要,您可以删除此字段。
关于mongodb - 在 MongoDB 中存储 null 与根本不存储 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12403240/