为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 MarkLogic JSON 中搜索文件中特定路径处的键值?

如何在 MarkLogic JSON 中搜索文件中特定路径处的键值?

DIEA 2021-10-21 10:59:53
我的数据库中有一些特定格式的 JSON 文档。有一个键出现在文档中的两个位置。我想编写一个搜索查询,我可以在其中搜索仅在第二次出现时的值。如需更清晰的图片,请参阅以下创建的示例。我试过了,cts.jsonPropertyScopeQuery("c1",cts.trueQuery())但没有指定路径。我也试过了cts.jsonPropertyScopeQuery("c1", "e/c1")。 {    "a": "aa",    "b": "bb",    "c": {        "c1": "cc",        "c2": "ccc"    },    "d": "dd",    "e": {        "c1": "xx"    }}我希望查询从所有文档中获取c1under 的所有值e并将它们放入数组中以供进一步处理。
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

如果路径已知,请考虑在特定路径上定义路径范围索引并使用 cts.pathRangeQuery 或 cts.values,具体取决于您的目标。

例如,在 /e/c1(或 e/c1,如果需要相对)上定义路径范围索引,然后在该索引上使用 cts.values 来获取所有值:

cts.values(cts.pathReference("e/c1"))

同样,如果要搜索包含特定值的文档,而不是所有值的列表,则可以使用 cts.pathRangeQuery:

cts.search(cts.pathRangeQuery("e/c1","=","xx"))


查看完整回答
反对 回复 2021-10-21
?
跃然一笑

TA贡献1826条经验 获得超6个赞

由于要检索值列表,因此需要设置索引。如果您想要所有c1值,您将使用范围索引,但由于您只想要其中的一些,您将需要一个路径范围索引。完成设置后,您可以使用cts.values.



查看完整回答
反对 回复 2021-10-21
  • 3 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信