我有一个MongoDb集合,其中包含一些可能与集合中所有对象无关的密钥。我将要查找查找未填充这些键的所有对象的查询。
会更好吗?
{'x' : 'banana', 'y' : null}
或{'x' : 'banana'}
我知道我可以查询我想要的结果(参见here),我只是想知道哪个被认为是“最佳实践”以及为什么。
注意(如果相关)该集合有大约10个“必需”字段和3个“可选”字段。
答案 0 :(得分:1)
我会选择不存储空字段。但是,它取决于您将在此集合上运行的查询类型。如果你能详细说明,我会更新答案。
答案 1 :(得分:1)
我想说这取决于你的应用程序对此集合中的文档所做的语义。不存储y: null
,您将节省一些空间。如果您确实存储了y: null
,则必须记住y
技术上存在,因此您应该以某种方式查询null
。如果Mongo上面的图层不关心那么我就不会存储空字段,就像@Derick推荐的那样。但是,如果它确实关注,您发现使用null
中的y
更容易,那就去吧。
更新关于有效性的问题。如果你正在做所有事情,那么你正在将数据集拟合到RAM中。话虽如此,我认为除非你按y
索引,否则这两种方法都没有明显的区别。在这种情况下,行为可能不同,但找出的最佳方法是运行一些测试。