我正在尝试使用in筛选包含嵌入式文档的数组。我创建的查询在Shell中工作正常。
但是spring数据抱怨$ in的无效使用
现在,如果调试并且我通过聚合将toString中生成的内容复制并粘贴到外壳中,它也可以工作,但仅在通过代码完成时有效。
"requirements" : { "$filter" : { "input" : "$requirements" , "as" : "requirement" , "cond" : { "$not" : [ { "$or" : [ { "$in" : [ "$$requirement" , [ { "id" : "req1" , "value" : "val1"}]]} , { "$in" : [ "$$requirement" , [ { "id" : "req2" , "value" : "val2"}]]} , { "$in" : [ "$$requirement" , [ { "id" : "req3" , "value" : "val3"}]]}}
{..
...
"requirements" : [
{
"id" : "req1",
"value" : "val1"
},
{
"id" : "req2",
"value" : "val2"
}
]
..}
所以我想发送需求数组,并且只返回不在数组即查询中的requiremnts,因此$ not,$ or和$ in