2017-07-26 58 views
1

TLDRMarklogic QueryByExample中收集的NodeJS

有没有办法来限制queryByExample在一个的NodeJS收集?

问题面临

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

例如我喜欢

searchJSON = { 
     title: { $word: "test" }, 
     description: { $word: "desc" } 
}; 

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

希望的东西。在这种情况下searchJSON本来是动态构建,例如也许有时标题可以从搜索中省略。

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

回答

2

目前,我认为你将不得不使用

qb.and([ 
    qb.collection('collectionName'), 
    qb.word('title', 'test'), 
    qb.word('description', 'desc') 
    ]) 

表达对QueryBuilder的,而不是查询实例查询见http://docs.marklogic.com/jsdoc/queryBuilder.html#word

这就是说,它应该对Node.js的API是可能的放宽基础上,修复了限制在MarkLogic 9.0-2

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

+0

这个工程文件存在问题。我不知道'和'方法可以采用一个数组。 谢谢。 – Kholofelo