mongodb c# how to work with BSON document
There are a few ways, but here's one:
// build some test data BsonArray dataFields = new BsonArray { new BsonDocument { { "ID" , ObjectId.GenerateNewId()}, { "NAME", "ID"}, {"TYPE", "Text"} } }; BsonDocument nested = new BsonDocument { { "name", "John Doe" }, { "fields", dataFields }, { "address", new BsonDocument { { "street", "123 Main St." }, { "city", "Madison" }, { "state", "WI" }, { "zip", 53711} } } }; // grab the address from the document, // subdocs as a BsonDocument var address = nested["address"].AsBsonDocument; Console.WriteLine(address["city"].AsString); // or, jump straight to the value ... Console.WriteLine(nested["address"]["city"].AsString); // loop through the fields array var allFields = nested["fields"].AsBsonArray ; foreach (var fields in allFields) { // grab a few of the fields: Console.WriteLine("Name: {0}, Type: {1}", fields["NAME"].AsString, fields["TYPE"].AsString); }
You can often use the string indexer ["name-of-property"]
to walk through the fields and sub document fields. Then, using the AsXYZ
properties to cast the field value to a particular type as shown above.