2

.Net XCCを使用して、ドキュメントがMarkLogicデータベースのコレクションに存在するかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

2

パフォーマンスが重要な場合は、 のフラグメント フェッチを避けることができますxdmp:document-get-collections。これは、URI レキシコンが有効になっている場合に可能です。

exists(
  cts:uris(
    (), (),
    cts:and-query(
      (cts:document-query($document-uri),
       cts:collection-query($collection-uri)))))

これは、指定されたコレクション URI とドキュメント URI に一致するドキュメント URI があるかどうかを URI レキシコンに問い合わせます。

于 2013-03-07T22:58:18.507 に答える
1

の基本を知っていると仮定して、クエリ http://docs.marklogic.com/6.0/javadoc/xcc/com/marklogic/xcc/AdhocQuery.htmlXCCを使用します。AdHoc

私が知っている最も簡単な方法は、使用することです

  xdmp:document-get-collections()

http://docs.marklogic.com/xdmp:document-get-collections

したがって、次のようなアドホック クエリを作成できます。

xdmp:document-get-collections("doc.xml") = "collection"

「=」は等しいセットであることに注意してください

結果はブール値です

XQuery インジェクションが心配な場合 (つまり、文字列 "doc.xml" を完全に制御できない場合) は、外部パラメーターを使用する必要があります。

declare variable $doc external ;
declare variable $collection external ;
xdmp:document-get-collections($doc) = $collection

次に、パラメータ " doc" および " collection:" の値を外部変数としてクエリに渡します。

于 2013-03-07T12:46:43.630 に答える