对象示例:
[
{
"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
实际上,如果包含这个值,它将检索列表中的所有对象。
有什么建议吗?
1条答案
按热度按时间nfg76nw01#
您需要使用
$
运算符&为此您需要使用$elemMatch
在查询中。使用此查询