Mongo在文档中存储过滤器

时间:2019-12-31 05:08:43

标签: mongodb performance nosql

我必须在mongo中存储一些模板数据,并限制文档的年龄范围。下面的示例文档。

{
_id: ObjectId("unique123..."),
other data...,
filters : {
   age : {
      min : 18,
      max : 23
   }
},
{
_id: ObjectId("unique234..."),
other data...,
filters : {
   age : {
      min : 20,
      max : 40
   }
}

现在,我可以使用{ $and : [{"filters.age.min": {$lt : 26}}, {"filters.age.max": {$gt : 26}}] }查询年龄为26岁的所有模板。 有没有更有效的文档存储方式?

1 个答案:

答案 0 :(得分:0)

在不了解您的数据模型的情况下,我只能根据我对您的文档的有限知识提出以下建议:

  • “过滤器”嵌套对象似乎在文档对象中不合适。总是在查询本身中设置过滤器,因此数据库中的目标文档应该与这些无关。似乎您内部只有一个要素:年龄,这似乎太过分了。我再次根据提供的信息进行假设。
  • 如果每个文档都需要有一个最大年龄和一个最小年龄,为什么不将它们同时存储为根级别的“ minAge”和“ maxAge”呢?

然后您的查询变为

antMatchers