2017-03-23 16 views
1

単純なドキュメントにマップする必要があります。 私はMongoのシェルにこれに必要な取得することができる:mongodb C#ドライバを使用したマップ投影結果

db.getCollection('items').aggregate([ 
{ "$project": { 
    "Team": "$TeamId", 
    "Marker": "$Properties.marker.Value" 
}} 
]) 

Iは、C#ドライバ(バージョン2.3.0)を用いて同じ結果を得るために必要。私はこの

var aggregation = m_database.GetCollection<BsonDocument>("items").Aggregate(); 
var projectionDefinition = new BsonDocument("$project", new BsonDocument 
      { 
       { "Team", "$TeamId"}, 
       { "Marker", "$Properties.marker.Value" } 
      }); 

var query = aggregation.Project(projectionDefinition); 
var result = await query.ToListAsync(); 

を試してみましたが、私は

コマンド集計が失敗し、次のエラーを取得:式は$プロジェクトのトップレベルで許可されていない$を

誰かが何が起こっているのかkwons ?

答えて

2

あなたはとてもあなたは自分のprojectionDefinition簡素化 、あなたはBSONですでに$projectを持っているProject呼び出す場合:

var projectionDefinition = new BsonDocument 
     { 
      { "Team", "$TeamId"}, 
      { "Marker", "$Properties.marker.Value" } 
     }; 

私の個人的な意見:私は純粋なBSONを使用して避けるだろうが、MongoDBのドライバを使用するためにあなたの可能性を提供しますそれのためのあなたのC#dtoクラス。

+0

ありがとうございました!私は間違った方向に私を引っ張るいくつかのコードをコピーしました。私は純粋なbsonを避けるための助言に同意する(それは私が通常行うことだが、この場合、純粋なbsonの理由は私にとってより実現可能である) –

関連する問題