marklogic nodejs查询json文档的子记录

时间:2016-11-18 18:37:53

标签: marklogic

对于文件:

SELECT
   COUNT(dayone.fullVisitorId) as cnt,
   dayone.date as date
FROM [storied-toolbox-121439:103262044.ga_sessions_20161108] as dayone
JOIN [storied-toolbox-121439:103262044.ga_sessions_20161109] as daytwo
ON dayone.fullVisitorId = daytwo.fullVisitorId
GROUP BY 2

我希望文档匹配if(a.b = 1和a.c = 2)在同一个子对象中。

这里,只有[0]匹配(a.b = 1和a.c = 2)

对于文件:

{
  a: [
    { b: 1, c: 2 },
    { b: 3, c: 2 },
    { b: 1, c: 4 },
  ]
}

结果不一定是匹配。

1 个答案:

答案 0 :(得分:1)

我还没有在Node.js客户端API中完成此操作,但总的来说,我认为您需要在cts:near-query()中包含cts:element-query。对于近似查询,请指定距离1并使用" ordered"选项。我不确定语法,但这应该让你接近:

qb.scope(
  'a',
  qb.near(
    qb.value('b', 1),
    qb.value('c', 2),
    1,
    qb.ordered(true)
  )
)

请注意,您需要启用一些索引才能使unfiltered queries提供准确的结果。为了使近距离查询起作用,我打开"元素位置"和"元素词位置"。