Подтвердить что ты не робот

Как десериализовать объект BsonDocument обратно в класс

Как выполнить десериализацию объекта BsonDocument обратно в класс после его получения с сервера?

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

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

Можно ли выполнить десериализацию с помощью BsonReader?

4b9b3361

Ответ 1

На самом деле существует три способа:

1. Укажите тип, который вы хотите загрузить непосредственно в FindAs<>

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

2.Deserialize документ через BsonSerializer:

BsonSerializer.Deserialize<MyType>(doc);

3.Map bson document вручную для вашего класса:

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

В большинстве случаев вы в порядке с первым подходом. Но иногда, когда ваши документы неструктурированы, вам может понадобиться третий подход.