mongodb-spring data-how to pick objects from different array into array/list如何从不同的数组中选取对象

jfgube3f  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(303)

对象示例:

[
    {
        "name": "aaa",
        "list": [
            {
                "key": "val1"
            },
            {
                "key": "val2"
            },
            {
                "key": "val3"
            },
            {
                "key": "val4"
            }
        ]
    },
    {
        "name": "bbb",
        "list": [
            {
                "key": "val2"
            },
            {
                "key": "val4"
            },
            {
                "key": "val6"
            },
            {
                "key": "val8"
            }
        ]
    }
]

查询:list.key=val1或val6
实际结果:

[
{"key":"val1"},
{"key":"val2"},
{"key":"val3"},
{"key":"val4"},
{"key":"val2"},
{"key":"val4"},
{"key":"val6"},
{"key":"val8"}
]

预期结果:

[
{"key":"val1"},
{"key":"val6"}
]

我需要选择列表中所有符合条件的对象。

@Query(value="{$or :{ 'listKey' : ?0},{ 'listKey' : ?1} }", fields="{ 'listKey' : 1}")
    public List<Object> findByListKey(String value,String value2); // val1 or val6

实际上,如果包含这个值,它将检索列表中的所有对象。
有什么建议吗?

nfg76nw0

nfg76nw01#

您需要使用 $ 运算符&为此您需要使用 $elemMatch 在查询中。
使用此查询

@Query(value="{ list: {$elemMatch: {$or: [{ 'key': ?0 }, { 'key': ?1 }]}}}", fields="{ 'list.$':1}")

相关问题