私は10Genの公式C#ドライバを使用しています。私は直接RunCommandメソッドを使用してCommandResultを取得しますが、逆シリアル化できません。CommandResultを逆シリアル化する方法
var commandResult = db.RunCommand(command);
list<Post> posts = ??// how to deserialize to posts collection
私は10Genの公式C#ドライバを使用しています。私は直接RunCommandメソッドを使用してCommandResultを取得しますが、逆シリアル化できません。CommandResultを逆シリアル化する方法
var commandResult = db.RunCommand(command);
list<Post> posts = ??// how to deserialize to posts collection
さらに詳しい情報を提供することはできますか?あなたはどんなコマンドを実行していますか?
おそらく、あなただけではなく、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);
:このBsonDocumentはポストのインスタンスの有効なシリアル化であると仮定すると、あなたはこのようにそれをデシリアライズできます。 – AnyOne