は、私は、次のしている:MongoDBの/ C#の投影誤理解
var P = Builders<T>.Projection.Include(_ => _.AccountId);
var R = Mongo.Find(E).Project(P).FirstOrDefault();
ここに私は理解していないものだ。その突起が
、私はACCOUNTIDも_id含めるTを必要としています。 私は_idが含まれていない場合は、私は次のエラーを取得する:
{"Element '_id' does not match any field or property of class T."}
私は以下のようにして、_idを除外しようとした場合:
var P = Builders<T>.Projection.Include(_ => _.AccountId).Exclude(_ => _._id);
var R = Mongo.Find(E).Project(P).FirstOrDefault();
私は別のエラーを取得:
{"Element 'CreatedOn' does not match any field or property of class T."}
CreatedOnは、DBのレコードの別のフィールドです。 私は1つのフィールド(AccountId)とそれ以外のもの(_id)などを抽出する必要があります(そして、理想的には文字列にマップします。文字列だけのクラスですが、それは二次的な問題です)
私は何が欠けていますか?
はがを除外しながら、「すべてを取る」と特定のフィールドを除外する意味でしょうか?私は、は手段が白紙の状態を取る含めることを理解して指定されたすべてのフィールドが(何らかの理由と_id)ステートメントを含める追加するアム その場合、これらの2つのコマンドは排他的です。私の投影で
Expression(_ => _.AccountId)
を、と私は私が望む結果を得るが、これは含める/除外
( items = newColl.find()。投影(フィールドを含める( "accountId")、excludeId())) )); '。あなたがそれを理解できるかもしれない。 –
Veeram
CreatedOn
がDateTime
であると仮定した場合)ので、同様にクラスT
にそのフィールドを追加する必要があります。私はそれを変換するC#の多くの知識を持っていない。 (新しいArrayList <>())のリスト私が理解できないことは、インクルード指示が含まれているものだけを意味し、除外がすべて除外されていることを意味し、どのように一緒に働くことができるかということです。もしincludeがAccountIdを呼び出すならば、含まれていないものは存在しないと仮定することができます。 excludeディレクティブの場合は真であるため、両方を併用すると競合が発生します。わかりません – Thomas
Atleast Java mongoドライバの実装では、最後に定義された順番でピッキングすることによって競合する投射を処理します。私はそれを自分でテストしていない。 – Veeram