2011-12-27 13 views
1

私は10Genの公式C#ドライバを使用しています。私は直接RunCommandメソッドを使用してCommandResultを取得しますが、逆シリアル化できません。CommandResultを逆シリアル化する方法

var commandResult = db.RunCommand(command); 

list<Post> posts = ??// how to deserialize to posts collection 

答えて

1

さらに詳しい情報を提供することはできますか?あなたはどんなコマンドを実行していますか?

おそらく、あなただけではなく、FindAllメソッドを使用する必要があり、その場合にはポストコレクションを、照会したい:

var server = MongoServer.Create("mongodb://localhost/?safe=true"); 
var database = server["test"]; 
var collection = database.GetCollection<Post>("posts"); 

var posts = collection.FindAll().ToList(); 

[編集]

その下のコメントに基づいて、あなたは集約を使用していますフレームワーク(まだリリースされていませんが、マスター開発ブランチで利用可能です)私はいくつかの追加情報を提供することができます。

C#ドライバはまだ新しい集約フレームワークをサポートしていませんが、コマンドに基づいているため、ドライバが公式にサポートする前でも使用できます。キーは、CommandResultがResponseプロパティを介して返された未処理のBSONドキュメントを公開してから、応答を分離する方法を知っていることを理解することです。例:

var commandResult = collection.RunCommand(aggregationCommand); 
var response = commandResult.Response; 
foreach (BsonDocument result in response["results"].AsBsonArray) 
{ 
    // process result 
} 

結果変数の型はBsonDocumentです。私は他の方法を使用することはできないですので、私はactualy新しい集約フレームワークパイプラインのコマンドを実行しています

var post = BsonSerializer.Deserialize<Post>(result); 
+0

:このBsonDocumentはポストのインスタンスの有効なシリアル化であると仮定すると、あなたはこのようにそれをデシリアライズできます。 – AnyOne

関連する問題