猿问

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

我的数据库中有一些特定格式的 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并将它们放入数组中以供进一步处理。


DIEA
浏览 138回答 3
3回答

元芳怎么了

如果路径已知,请考虑在特定路径上定义路径范围索引并使用 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"))

跃然一笑

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

相关分类

JavaScript
我要回答