2017-07-26 48 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