tutorial guide create conexion collection c# mongodb bson

guide - mongodb insert c#



mongodb c#cómo trabajar con el documento BSON (1)

Hay algunas maneras, pero aquí hay una:

// 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); }

A menudo puede usar el indexador de cadena ["name-of-property"] para recorrer los campos y los campos de los sub-documentos. Luego, use las propiedades AsXYZ para convertir el valor del campo a un tipo particular como se muestra arriba.

He pasado MUCHAS horas buscando la respuesta ... Esto es muy fácil en PHP pero simplemente no puedo ponerlo en C # (soy nuevo en C # y mongo ...) Estoy tratando de iterar Todos los niveles de un documento almacenado. El documento se ve así:

{ "_id" : ObjectId("51f90101853bd88971ecdf27"), "fields" : [{ "ID" : ObjectId("51fd09498b080ee40c00514e"), "NAME" : "ID", "TYPE" : "Text" }, { "ID" : ObjectId("51fd09a68b080ee40c0064db"), "NAME" : "Title", "TYPE" : "Text" }, { "ID" : ObjectId("51fd09b28b080ee40c004d31"), "NAME" : "Start Date", "TYPE" : "Date" }, { "ID" : ObjectId("51fd09c28b080ee40c007f2e"), "NAME" : "Long Description", "TYPE" : "Memo" }], "name" : "TODB", "updated" : "Wed Jul 31 2013 08:20:17 GMT-0400 (Eastern Daylight Time)" }

No tengo problemas para acceder al "nombre" y "actualizado", pero no puedo averiguar cómo acceder a la matriz de "campos".

Código hasta ahora:

{ MongoServer mongo = MongoServer.Create(); mongo.Connect(); var db = mongo.GetDatabase("forms"); mongo.RequestStart(db); var collection = db.GetCollection("forms"); var query = new QueryDocument("name", "TODB"); mongo.Disconnect(); } @foreach(BsonDocument item in collection.Find(query)) { @item.GetElement("name").Value @item.GetElement("_id").Value }

Nuevamente, puedo acceder al nombre y _id simplemente no a ninguno de los valores del documento secundario.

¡Gracias de antemano por cualquier ayuda! Una vez que me haya determinado la lectura, también querré escribir datos ...