マイドキュメント属性一致検索文書は(私は私の場合のために役に立たない属性を削除します) 編集:私の「役に立たない」属性がいくつかの問題を引き起こすようです。ここに私の詳細なオブジェクト。Marklogic(Nodejs API)は、このようなmarklogicにJSONに保存されているオブジェクト配列内の2(またはそれ以上)の条件が
私は 言語ロケール= 'en_UK'とがvar query =
qb.where(
qb.directory('myDocuments'),
qb.scope(
qb.property('languages'),
qb.and(
qb.scope(qb.property('code'), qb.term('en_UK')),
qb.scope(qb.property('translated'), qb.term('true'))
),
qb.fragmentScope('properties')
)
);
と
で=真をcontent.translatedに少なくとも一つのオブジェクトを持っているすべての文書を検索してみてください{
documentId: '',
/* 4 attrs */,
languages: [{
locale: 'en_UK',
attr: '',
content: {
/* 14 attrs */,
translated: true,
/* 2 or 4 attrs */,
}
}, {
locale: 'de_DE',
attr: '',
content: {
/* 14 attrs */,
translated: false,
/* 2 or 4 attrs */,
}
}, {...}
],
/* 0 or 2 attrs */
}
qb.where(
qb.directory(myDocuments'),
qb.scope(qb.property('languages'),
qb.propertiesFragment(
qb.value(
qb.property('languages'),
qb.and(
qb.scope(qb.property('code'), qb.term('en_UK')),
qb.scope(qb.property('translated'), qb.term('true'))
)
)
)
)
)
どちらの場合でも、クエリの戻り値のdocume ntsは、言語配列の各オブジェクトではなく、ドキュメント全体の2つの条件に一致します。
私はドキュメントを読みましたが、何も見つかりませんでした。どのように私は私のクエリを作ることができるアイデアはありますか?
編集:近いクエリを試しますが、動作しません。良い文書とは一致しません。
qb.where(
qb.directory(config.marklogicConfiguration.product),
qb.scope(qb.property('languages'),
qb.near(
qb.and(
qb.scope(qb.property('code'), qb.term('ja_JP')),
qb.scope(qb.property('translatedInTheLanguage'), qb.term('true'))
),
1,
qb.weight(0),
qb.ordered(true)
)
)
)
私はオブジェクト構造を変更できるかどうか尋ねます。
edit2:最後に、正しい結果を得るためにXqueryリクエストを使用します。私の場合は
xdmp:directory("/product/direcory/")/languages[code eq "ja_JP" and content/translated eq "true"] ! root(.)
私のブール値を文字列として保存されているので、私はコンテンツのEQを使う/条件を翻訳しました。 ! ルート(。):[/ EQ翻訳「真」コードEQ「ja_JPで」と内容]全オブジェクト、条件に合致するだけでなく、言語のオブジェクトを返す
edit2のようなXPath式は常にフィルタリングモードで実行されますが、それはあまり拡張できません。 – grtjn