cts查询,从Marklogic staging中json文档的字段中查找唯一值



我正试图编写一个JavaScript cts查询,以便仅查询基于另一个键的JSON文档中某个键的唯一值。即,类似于查询:select distinct(name) from data-hub-staging where source='source1'

{
"source": "source1",
"name": "John",
"DOB": "1-01-1990",
"load_date": "2021-10-23 10:23:55"
},
{
"source": "source1",
"name": "John",
"DOB": "1-01-1990",
"load_date": "2021-10-24 10:23:55"
},
{
"source": "source1",
"name": "Mark",
"DOB": "1-01-1990",
"load_date": "2021-10-24 10:23:55"
}

我一直在尝试下面的查询,但它返回了所有字段。我只想要唯一的名称字段。

const query = cts.jsonPropertyValueQuery(
"source",
"source1");
[...new Set (cts.search(query)
.toArray()
.map(doc => doc.root.name).sort())]
Current result: [John,John,Mark]
Expected result: [John,Mark]

集合不会消除name值的重复,因为它们是text()节点。您需要获取.valueOf()这些文本节点,然后字符串将被消除重复。

const query = cts.jsonPropertyValueQuery(
"source",
"source1");
[...new Set (cts.search(query)
.toArray()
.map(doc => doc.root.name.valueOf()).sort())]

最新更新