查询MongoDb的key = null或exists = false是否更有效?

时间:2012-04-28 15:04:53

标签: mongodb

我有一个MongoDb集合,其中包含一些可能与集合中所有对象无关的密钥。我将要查找查找未填充这些键的所有对象的查询。

会更好吗?
  • 始终在对象中包含密钥并将其填充为null? {'x' : 'banana', 'y' : null}
  • 当密钥不相关时,请不要包含密钥{'x' : 'banana'}

我知道我可以查询我想要的结果(参见here),我只是想知道哪个被认为是“最佳实践”以及为什么。

注意(如果相关)该集合有大约10个“必需”字段和3个“可选”字段。

2 个答案:

答案 0 :(得分:1)

我会选择不存储空字段。但是,它取决于您将在此集合上运行的查询类型。如果你能详细说明,我会更新答案。

答案 1 :(得分:1)

我想说这取决于你的应用程序对此集合中的文档所做的语义。不存储y: null,您将节省一些空间。如果您确实存储了y: null,则必须记住y技术上存在,因此您应该以某种方式查询null。如果Mongo上面的图层不关心那么我就不会存储空字段,就像@Derick推荐的那样。但是,如果它确实关注,您发现使用null中的y更容易,那就去吧。

更新关于有效性的问题。如果你正在做所有事情,那么你正在将数据集拟合到RAM中。话虽如此,我认为除非你按y索引,否则这两种方法都没有明显的区别。在这种情况下,行为可能不同,但找出的最佳方法是运行一些测试。