首页 > 解决方案 > 如何使用聚合构建复杂的过滤器查询。蒙古数据库

问题描述

我有一个“评估”集合,每个评估都具有以下结构:

在此处输入图像描述

我有一个标签列表来过滤这个样本结构:

[{ LabelId="5fe34b13f0031e1078e08b5c", Value="BOL"}, 
{ LabelId="5fe34b13f0031e1078e08b5c", Value="LGV"}]

我想要做的是过滤“评估”集合以仅获取具有评估结果的评估,这些评估具有与上面列表中对象过滤器的相同 LabelId 和值匹配的 EvaluatedLabels。

换句话说,我需要评估给定标签/值组合的评估。

我将如何使用聚合框架使用 mongodb 查询语言来做到这一点?

标签: mongodbmongodb-queryaggregation-frameworkmatch

解决方案


您可以在两个字段上创建复合索引,如下所示:

db.evaluations.createIndex({ "EvaluationResults.EvaluationLabels.LabelId":1, "EvaluationResults.EvaluationLabels.Value":1 })

并过滤具体评估如下:

db.evaluations.find({ "EvaluationResults.EvaluationLabels.LabelId":"5fe", "EvaluationResults.EvaluationLabels.Value":"BOL" })

推荐阅读