【发布时间】:2017-02-28 17:19:42
【问题描述】:
环境:NodeJS 客户端,Marklogic 8 服务器。
NodeJS 的查询是:
var query = qb.where(
qb.directory('/root/dir/'),
qb.scope(
qb.property('sources'),
qb.value('brand','MyBrand')
)
);
翻译后的查询是:
{
"whereClause": {
"query": {
"queries": [
{
"directory-query": {
"uri": [
"/root/dir/"
]
}
},
{
"container-query": {
"json-property": "sources",
"value-query": {
"json-property": "brand",
"text": [
"MyBrand"
]
}
}
}
]
}
},
"queryType": "structured",
"queryFormat": "json"
}
查询返回 10501 个文档。
但是20个文档不符合查询条件(sources.brand = MyBrand)
返回了不正确文档“/root/dir/0029aaa0-53dc-11e6-8f88-311cf9885168.json”的示例提取:
{
sources:
[
{
"somefield1": {
"somesubfield": "0D793B77-826A-4E19-BCEF-5F1E5C07271A"
},
"somefield2": "6408467",
"brand": "NA",
"somefield3": "TEST"
},
{
"somefield": {
"somesubfield": "832B4AE2-C817-4960-BF8C-63374E7D1B66"
},
"somefield2": "6408467",
"brand": "NA",
"somefield3": "TEST"
}
],
otherFieldsSkipped: true,
badScope:
[
{
"brand": "MyBrand",
},
],
}
问题出现在 2 个不同的平台上。
只有少数文档不正确,其中 badScope[0].brand 与值 (MyBrand) 匹配。
谢谢
【问题讨论】:
-
确切版本是 Marklogic 8.0.5
-
经过一番调查,在不正确的返回文件中,我发现一个属性(品牌)与其他范围内的值(MyBrand)匹配。所以查询不尊重范围(来源)。
标签: marklogic marklogic-8