2015-06-01 7 views
3

У меня есть структура JSON-то вродеMarkLogic | NodeJS API - Запрос на атрибут поля

{ 
    foo:"bar", 
    keyPhrases:[ 
     {key: "random thing", value: 5}, 
     {key: "another random", value: 3} 
    ] 
} 

Как я могу сделать запрос на слово keyPhrases.key? Я попытался

qb.word('keyPhrases.key', 'random')

или

qb.word(qb.property('keyPhrases.key'), 'random') 

и он не работает. Есть идеи? Я знаю, что это возможно с QBE, но для Marklogic NodeJS API вы не можете указать коллекцию, и мне нужно.

ответ

4

Необходимо qb.scope().

var ml = require('marklogic'); 
var conn = require('./config.js').connection; 
var db = ml.createDatabaseClient(conn); 
var qb = ml.queryBuilder; 

db.documents.query(
    qb.where(
    qb.collection('test'), 
    qb.scope(qb.property('keyPhrases'), qb.word('key', 'random')) 
) 
    .withOptions({metrics: true}) 
).result() 
.then(function(docs) { 
    console.log('This search found: ' + JSON.stringify(docs[1])); 
}) 
.catch(function(error) { 
    console.log('something went wrong: ' + error); 
}); 

В качестве альтернативы вы можете создать поле и запрос на основе маршрута.

Смежные вопросы