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 ...