MarkLogic node.js 客户端 API - 按具有 XML 命名空间的元素值查询
MarkLogic node.js Client API - Query by element value with XML namespace
假设我有一个记录结构如下的集合:
<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>
......
然后我想 select 记录 z:id = whatever 或 z:name = whatever。我如何使用 queryBuilder 执行此操作?
我已经能够在没有命名空间的情况下成功地进行此类查询。对于命名空间,它的工作方式似乎不同。
您需要使用 QueryBuilder.element() 指定目标元素。 element() 的文档说可以通过三种方式指定元素的 QName:
A name without a namespace can be expressed as a string. A namespaced name can be expressed as a two-item array with uri and name strings or as an object returned by the queryBuilder#qname function.
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);
});
假设我有一个记录结构如下的集合:
<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>
......
然后我想 select 记录 z:id = whatever 或 z:name = whatever。我如何使用 queryBuilder 执行此操作?
我已经能够在没有命名空间的情况下成功地进行此类查询。对于命名空间,它的工作方式似乎不同。
您需要使用 QueryBuilder.element() 指定目标元素。 element() 的文档说可以通过三种方式指定元素的 QName:
A name without a namespace can be expressed as a string. A namespaced name can be expressed as a two-item array with uri and name strings or as an object returned by the queryBuilder#qname function.
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);
});