我已经找到了关于joins的文档和关于subqueries的文档,但是我不知道如何将它们结合起来。
我想通过id
(这是一个传入的变量)来搜索某个内容。结果将是sectionpath
。然后我想找到所有以sectionpath
* 开头 * 的文档。我可以在一个查询中完成这一操作吗?
以下是我目前所做的尝试:
sectionpath:_query_:"{!fl=sectionpath}id:<variable>"*
我知道这行不通,但这是它的目的:如果sectionpath
是以id为<variable>
的文档的sectionpath
开头(这就是 * 的含义),那么给出结果。我知道这远远不可行,但我不知道如何接近我的意图。
我也试过这样的方法:
{!join from=sectionpath to=sectionpath}_query_:"{!fl=sectionfullpath}id:<variable>"
但这似乎回归到了一切,它似乎不受sectionpath的限制。
1条答案
按热度按时间5rgfhyps1#
有多个阶段来实现预期的结果,但简而言之;是,可以在单个查询中使用字段的值。
我们将使用
[subquery]
* 转换器,然后使用{!prefix}
* 查询解析器。此外,我们将使用字段值作为子查询的输入。首先,查询要在子查询中使用其值的文档:
或者如果您只使用id来筛选主文档,则可以使用筛选查询;
指定子查询并选择要为主文档检索的字段:
为子查询提供查询,同时使用主文档字段(在原始查询参数中):
这里我们使用
!term
查询解析器来指示我们要搜索的字段。另外,通过使用v
,我们引用了一个名为$row
的自动变量来获取主文档及其section_path
值。请记住,这将构造类似
section_path:xyz
的查询,但我们希望获取section_path
值 * 以 * main records '开头的文档。基本上,我们希望构造类似section_path:xy*
的查询。幸运的是,我们有一个!prefix
查询解析器。因此,将childpaths.q
更改为;指定要检索的子文档字段(也在原始查询参数中):
您还可以像这样限制子文档仅获得 5 行;
您还可以修改其他查询参数,就像常规查询一样。
发出请求,瞧!
下面是完整的查询: