我有一个 MongoDb 集合,其中一些键可能未填充与集合中的所有对象相关。我将要进行查询以查找未填充这些键的所有对象。
会不会更好
- 总是在对象中包含键并用 null 填充它?
{'x' : 'banana', 'y' : null}
或者 - 不要包含不相关的密钥
{'x' : 'banana'}
我知道我可以用任何一种方式查询我想要的结果(见这里),我只是想知道哪个被认为是“最佳实践”以及为什么。
请注意(如果相关)该集合有大约 10 个“必需”字段和 3 个这些“可选”字段。
我会说这取决于您的应用程序对该集合中的文档所做的语义。通过不存储y: null
. 如果你确实存储了,y: null
你必须记住技术上存在,因此你应该以某种方式y
查询s。null
如果 Mongo 上面的层不在乎,那么我会选择不存储空字段,就像@Derick 推荐的那样。但是,如果它确实关心,并且您发现使用null
s 中的y
s 更容易,那么就去做吧。
更新您关于有效性的问题。如果你做的一切都是正确的,那么你正在工作的数据集适合 RAM。话虽如此,除非您按y
. 在这种情况下,行为可能会有所不同,但找出答案的最佳方法是运行一些测试。
我会去不存储空字段。但是,这在一定程度上取决于您将在此集合上运行哪种查询。如果你能详细说明,我会更新答案。