MarkLogic - node.js客户端API - queryBuilder查询ID数组

时间:2015-05-21 02:47:13

标签: node.js marklogic

这个问题类似于: MarkLogic - XQuery - cts:element-range-query using variable length sequence or map

但这次我需要在node.js客户端API中使用queryBuilder进行查询。

我收集了100,000条记录,结构如下:

<record>
    <pk>1</pk>
    <id>1234</id>
</record>
<record>
    <pk>2</pk>
    <id>1234</id>
</record>
<record>
    <pk>3</pk>
    <id>5678</id>
</record>
<record>
<pk>4</pk>
    <id>5678</id>
</record>

我在id上设置了范围索引。

我想使用queryBuilder node.js客户端API编写一个查询,它允许我传入一组ID并获取记录列表。

它需要: 1)查询特定的集合 2)利用范围指数来提高绩效

1 个答案:

答案 0 :(得分:2)

没关系,我弄明白了这个问题。

db.db.documents.query(
  q.where(
    q.collection('Records'),
    q.or(
        q.value('id', ['1', '2'])
    )
  ).slice(1, 99999999)
)

我最初试图将一个数组传递给q.value而我只得到有限的结果(当我预期20时得到10)。所以我觉得我做错了。

事实证明我只需要将where子句切片以包含所有内容。显然,如果你没有指定要花多少钱,它默认为10。

另请注意,当我尝试.slice(0)本来是首选时,我有一个例外。