【发布时间】:2022-10-02 04:00:00
【问题描述】:
\"array\": [
{
\"id\": \"000-1111\",
\"url\": \"http://test.com\",
\"name\": \"Fred\"
},
{
\"id\": \"000-1111\",
\"url\": \"http://test.com\",
\"name\": \"Joe\"
},
{
\"id\": \"000-1111\",
\"url\": \"http://test2.com\",
\"name\": \"Sarah\"
},
{
\"id\": \"000-1111\",
\"url\": \"http://test3.com\",
\"name\": \"Sam\"
}
]
在上面的 JSON 示例中,我试图匹配数组中的最后一个对象,其中 URL 和名称与我传入的完全相同的值匹配。我的数据中的问题是这个数组可以包含许多相同的对象完全相同的字段和值。
我目前的查询:
cts:search(fn:doc(),
cts:and-query((
cts:json-property-value-query(\"url\", \"http://test3.com\"),
cts:json-property-value-query(\"name\", \"Sam\")
))
)
当数组如下所示时,此查询会返回误报结果:
\"array\": [
{
\"id\": \"000-1111\",
\"url\": \"http://test3.com\",
\"name\": \"Fred\"
},
{
\"id\": \"000-1111\",
\"url\": \"http://test.com\",
\"name\": \"Sam\"
}
]
cts:queries 有没有办法将您的搜索限制在 JSON 数组的同一对象内?
此 XPath 方法适用于此数据集集合,但性能不佳:
fn:collection(\"mydata\")[array[url=\"http://test3.com\"][name=\"Sam\"]]
是否有与上述等效的 cts 表达式?
标签: marklogic