1

ブール値を返すコレクション名とそのコレクションを評価する式を動的に決定するクエリがあります。言う:

  • $my-collectionコレクションを指します。たとえば、文字列を含みます/db/my/collection
  • ブール式はexists(/foo/bar)です。

コレクション自体で実行できます。exists(/foo/bar)コレクション内のドキュメントにが含まれているかどうかに応じて、trueまたはfalseのいずれかが返されます/foo/bar。しかし、コレクション名が事前にわからない場合、どうすれば同じことができますか?

素朴に、私は試しcollection($my-collection)/exists(/foo/bar)ました。ただしcollection()、コレクション内のドキュメントノードを返すため、1つのブール値ではなく、コレクション内のドキュメントと同じ数のブール値が返されます。これは私が望んでいることではありません。さらに、私のコレクションには数万のドキュメントが含まれている可能性があるため、非常に遅くなる可能性があります。

では、代わりにこれをどのように書くべきですか?

4

1 に答える 1

1

式を次のように書き直すことができます。

exists(collection($my-collection)/foo/bar)

または、おそらくこれは、eXistsクエリオプティマイザによっては、パフォーマンスが向上する可能性があります。

exists((collection($my-collection)/foo/bar)[1])

HTH!

于 2012-02-16T20:06:32.560 に答える