web-dev-qa-db-fra.com

Comment désérialiser un objet BsonDocument en classe

Comment désérialiser un objet BsonDocument dans la classe après l'avoir obtenu du serveur?

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

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

Dois-je désérialiser en utilisant un BsonReader?

29
iefpw

Il y a en fait trois façons:

1.Spécifiez le type que vous souhaitez charger directement dans FindAs<>

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

2. Désérialisez le document via BsonSerializer:

BsonSerializer.Deserialize<MyType>(doc);

3.Mappez manuellement le document bson à votre classe:

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

Dans la plupart des cas, vous êtes d'accord avec la première approche. Mais parfois, lorsque vos documents ne sont pas structurés, vous pouvez avoir besoin d'une troisième approche.

69
Andrew Orsich