这个问题类似于: 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)利用范围指数来提高绩效
答案 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)本来是首选时,我有一个例外。