假设我有一个记录结构如此的集合:
<m:m xmlns:m="http://www.m.com/">
<m:data>
<z:term xmlns:z="http://z.come/schema/index.html#">
<z:name>abcd</z:name>
<z:id>123456789</z:id>
......
然后我想选择z:id = whatever或z:name = whatever的记录。我如何使用queryBuilder执行此操作?
当没有命名空间时,我已经能够成功地进行此类查询。使用命名空间它似乎没有相同的工作方式。
答案 0 :(得分:3)
您需要使用QueryBuilder.element()指定目标元素。 element()的文档说明有三种方法可以指定元素的QName:
没有命名空间的名称可以表示为字符串。命名空间名称可以表示为带有uri和name字符串的两项数组,或者表示为queryBuilder#qname函数返回的对象。
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.value(qb.element(['http://z.come/schema/index.html#', 'id']), '123456789')
)
).result()
.then(function(docs) {
console.log('This search found: ' + JSON.stringify(docs[0]));
})
.catch(function(error) {
console.log('something went wrong: ' + error);
});