web-dev-qa-db-ja.com

BsonDocumentオブジェクトを逆シリアル化してクラスに戻す方法

サーバーから取得した後、BsonDocumentオブジェクトを逆シリアル化してクラスに戻すにはどうすればよいですか?

QueryDocument _document = new QueryDocument("key", "value");
MongoCursor<BsonDocument> _documentsReturned = _collection.FindAs<BsonDocument>(_document);

foreach (BsonDocument _document1 in _documentsReturned)
{
    //deserialize _document1
    //?
}

BsonReaderを使用してデシリアライズしますか?

29
iefpw

実際には3つの方法があります。

1. FindAs<>に直接読み込むタイプを指定します

var docs = _collection.FindAs<MyType>(_document);

2. BsonSerializerを介してドキュメントをデシリアライズします:

BsonSerializer.Deserialize<MyType>(doc);

3. bsonドキュメントをクラスに手動でマップします。

var myClass = new Mytype();
myClass.Name = bsonDoc["name"].AsString;

ほとんどの場合、最初のアプローチで問題ありません。ただし、ドキュメントが構造化されていない場合、3番目のアプローチが必要になる場合があります。

69
Andrew Orsich