MarkLogic-node.js客户端API-queryBuilder ID查询数组
这个问题类似于: 但是这次我需要使用node.js客户端API中的queryBuilder进行查询 我收集了100000条记录,结构如下:MarkLogic-node.js客户端API-queryBuilder ID查询数组,node.js,marklogic,Node.js,Marklogic,这个问题类似于: 但是这次我需要使用node.js客户端API中的queryBuilder进行查询 我收集了100000条记录,结构如下: <record> <pk>1</pk> <id>1234</id> </record> <record> <pk>2</pk> <id>1234</id> </record> <
<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>
1.
1234
2.
1234
3.
5678
4.
5678
我已经在id上设置了范围索引
我想使用queryBuilder node.js客户端API编写一个查询,该API允许我传入一个ID数组并获取一个记录列表
它需要:
1) 查询特定集合
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)时,我遇到了一个例外。因为数据库可以包含比在单个请求中检索更多的文档,所以您应该指定要检索的文档的最大数量,这样您的解决方案才是正确的;顺便说一句,.slice(0)不返回任何文档,通常只有在获取facet时才会返回。