Mongo 查询以根据参数使用特定于数组的索引进行过滤

Mongo query to filter with an array specific index based on parameters

我在 mongoDB 中有一些文档具有以下结构

在我使用 spring 引导开发的 API Web 应用程序中,我必须编写以下查询代码。我可以接收一个 voltageLevelCode 来过滤寄存器,它将在数组中包含这个电压电平代码(这很容易)但问题是我也可以接收一个 voltageLevelCode 和一个类型,所以在这种情况下我必须过滤将在数组中包含此电压电平代码,并且在此电压电平代码内过滤包含此类型的代码(但请记住,电压电平内的类型) 我一直在尝试编写查询,但我不知道如何动态设置索引来过滤此电压级别内的类型。类似于:

{"voltageLevel.<TheIndexByTheDefinenVoltageLevelCode>.types" : "X" }

示例:

public List<MyClassRepresenting> findByFilter(String type,String voltageLevelCode);
{$and: [{'voltageLevel.voltageLevelCode' : ?1 },{'voltageLevel.<HowTogetIndexForSelectingVoltageLevelCode>.types' : ?2}]}

在这种情况下,根据接收到的 tensionLevel,类型参数必须根据此 tensionLevel 内的类型进行过滤

我在另一个查询中遇到了同样的情况。在 SQL 中,等价于 SELECT 在另一个 SELECT 到 select 子寄存器中,但不知道如何在 mongo.[=15= 中实现]

在 Whosebug 上提问时,包含您已经尝试过的内容总是很有趣。

我想你需要的是一个简单的 $elemMatch:

db.mycoll.find(
  { voltageLevel: { $elemMatch: { voltageLevelCode: "MT", types: "E" } } }
)