2017-03-04 11 views
-1

MongoDBに多数のドキュメントがあるかどうかを知る最速の方法を見つけようとしています。私は文書そのものを必要とせず、その存在を確認するだけです。MongoDB/C#:配列のドキュメントが返されずに存在するかどうかを調べる

のは、私はこのリストを持っていると仮定しましょう:

var L = new List<string> {"1", "3", "A"}; 

と私はこれらの文書が存在するかどうか知りたいです。

find(Query.In(_ => _._id, L)); 

、それは動作しますが、それはすべて返されます行うには

一つの方法は、それが(私はメモリからこれをしようとしているが、アイデアがあるので、構文は少し外れてもよい)、このようなものです

find(Query.In(_ => _._id, L)).Project(Projection.Expression(_ => _._id)); 

を、これは非常にうまく機能してくれ既存のIDのリストを返す:時間

の無駄であるだけでなく文書は、だから、私は、投影を通じて、IDのみを取得します。

問題は:プロジェクトを見つけるのは効率的ですか?それを達成するためのより速い方法がありますか?

(ボーナス質問:?どのように私は流暢な構文でquery.in行うことができます:))

+0

わかりませんFilterDefinitionをとるCount()メソッドを持っています。それはあなたが必要とする数を得るはずです。 –

+0

私は3.4を持っています。数はどれだけの文書が存在するのか、どれだけの文書が存在するのかを私に教えることはできません。 – Thomas

答えて

0

あなたはそれをやっている方法は私のopiniionに、okです。私は同じことをするだろう。 Projectステップがサーバー上で実行されているので、完全なドキュメントを取得できません。ちょうどIDだけで、あなたが望むものです。

あなたは流暢な構文で同じクエリを行うことができ、それは(私はcollection変数にあなたのコレクションを想定)だけです:あなたが使用しているのMongoDBドライバーのバージョンが、V2.4

collection.Find(_=>L.Contains(_._id)).Project(_=>_.Id).ToList(); 
関連する問題