集合NodeJS

时间:2017-07-26 06:36:19

标签: node.js marklogic

TLDR

有没有办法将queryByExample限制为NodeJS中的集合?

遇到问题

我有一些带有一些可选字段的复杂查询(即有时候会省略一些搜索字段)。所以我需要动态创建一个查询,例如在JSON中。 QueryByExample似乎是在这里使用的正确工具,因为它为我提供了传递JSON的灵活性。但是我的问题是我想将搜索限制在一个集合或目录中。

e.g。我希望有像

这样的东西
searchJSON = {
        title: { $word: "test" },
        description: { $word: "desc" }
};

//query
db.documents.query(qb.where(
    qb.collection("collectionName"),
    qb.byExample(searchJSON)
)).result()...

在这种情况下,searchJSON可以动态构建,例如,有时可能会从搜索中省略title。

这不起作用,因为查询构建器仅允许queryByExample成为唯一的查询。但我反而想建立一个仅限于集合或目录的动态搜索查询。

1 个答案:

答案 0 :(得分:2)

目前,我认为您必须使用QueryBuilder而不是使用

按查询来表达查询
qb.and([
  qb.collection('collectionName'),
  qb.word('title', 'test'),
  qb.word('description', 'desc')
  ])

请参阅http://docs.marklogic.com/jsdoc/queryBuilder.html#word

也就是说,Node.js API应该可以根据MarkLogic 9.0-2中的修复放宽该限制

请在https://github.com/marklogic/node-client-api

上提出问题