问题描述
我正在尝试使用“块联接父查询”解析器来检索父文档。 (q = {!parent which = allParents} someChildren), 但是我给出的过滤条件是在父级和子级中具有相同的字段,因此解析器抛出以下错误: “子查询不得与父过滤器匹配相同的文档。将它们与必须子句(+)组合在一起以查找问题文档。”
例如:
{
"parent": {
"name": "sam","age": "30","degree": "MBBS","docType" : "parent","childrens": [{
"name": "chang","age": "3"
},{
"name": "joseph","age": "10"
}
]
}
}
我想触发以下查询:
q = {!parent which = docType:parent}名称:chang
或
q = {!parent which = docType:parent}名称:sam
在两种情况下,我都想检索父级文档,我想将本节中指定的名称字段与父级名称字段或子级名称字段匹配。
我认为使用“阻止联接父查询解析器”是不可能的,正在寻找其他解决方案。
请问有人可以提供更好的方法吗?
解决方法
可以在 someChildren
中添加另一个条件以确保它不会匹配任何父级。
为此,您可以向子项添加特定属性,例如 "docType" : "child"
,并将其与 name
结合使用:
q={!parent which="docType:parent" v="+docType:child +name:sam"}