環境:NodeJSクライアント、Marklogic 8サーバー。Marklogic:データがクエリに準拠していません
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の文書が返された間違った文書 "/root/dir/0029aaa0-53dc-11e6-8f88-311cf9885168.json" のクエリ条件(sources.brand =マイブランド)
サンプル抽出と一致しません:
{
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 – JPA
調査の結果、間違った返信文書では、他のスコープの値(MyBrand)と一致するプロパティ(ブランド)が見つかりました。 したがって、クエリはスコープ(ソース)を尊重しません。 – JPA