Panache MongoDB: Return 仅匹配数组中的数据

Panache MongoDB: Return only matching data from Array

是否可以根据描述中的语言 属性 和 subTypes.descriptions 对实体应用过滤器以过滤以下集合条目?

{
    "id": "609a85120c133e33e4cc3ed7",
    "code": "REST",
    "descriptions": [
        {
            "lang": "pt",
            "description": "Restaurante"
        },
        {
            "lang": "en",
            "description": "Restaurant"
        }
    ],
    "subTypes": [
        {
            "code": "TIP",
            "descriptions": [
                {
                    "lang": "pt",
                    "description": "Restaurante Tipico"
                },
                {
                    "lang": "en",
                    "description": "Typical Restaurante"
                }
            ]
        },
        {
            "code": "HMB",
            "descriptions": [
                {
                    "lang": "pt",
                    "description": "Restaurante Hamburger"
                },
                {
                    "lang": "en",
                    "description": "Burger"
                }
            ]
        }
    ]
}

我想在 PanacheMongoEntity 的列表方法上应用查询。这可能吗?

您可以通过本机 MongoDB 查询(因此是标准 JSON 查询)在 PanacheMongoEntity 的 list 方法上使用任何可能的 MongoDB 查询。

MongoDB 允许 query an array of document, and support projection on the array element.

MongoDB 通过 find().project() 方法使用 Panache 投影仅适用于场投影,因此您需要直接在集合上使用本机 MongoDB 查询,您不会能够使用 list 方法。

像这样的东西应该可以工作:

Entity.mongoCollection().find("{//your query}", "{subTypes.descriptions:{$elemMatch: {lang:'en'}}}");