c# mongodb BsonDocument array -
the below code seems work except values not saved existing document.
mongoserver mongo = mongoserver.create(); mongo.connect(); var db = mongo.getdatabase("forms"); mongo.requeststart(db); var collection = db.getcollection("forms"); var query = new querydocument("_id",objectid.parse(id)); var resultscursor = collection.find(query); foreach (bsondocument item in resultscursor) { var formfields = new bsonarray(); formfields.add(new bsondocument { {"id", objectid.generatenewid()}, {"name",name}, {"type",type} } ); collection.save(item.add("fields",formfields)); i works because result of getlasterror run after save:
db.getlasterror() {mongodb.driver.getlasterrorresult} base {mongodb.driver.commandresult}: {mongodb.driver.getlasterrorresult} documentsaffected: 1 haslasterrormessage: false lasterrormessage: null updatedexisting: true i'm missing (probably simple...). assistance.
the code works fine (well, few tweaks make compile standalone , fit test environment):
mongoserver mongo = mongoserver.create(); mongo.connect(); var db = mongo.getdatabase("test"); // mongo.requeststart(db); // removed it's not correct var collection = db.getcollection("so"); var query = new querydocument("_id", "12345"); // hard-coded id test var resultscursor = collection.find(query); foreach (bsondocument item in resultscursor) { var formfields = new bsonarray(); formfields.add(new bsondocument { {"id", objectid.generatenewid()}, {"name", item["name"].asstring}, // grabbed few values doc {"type", item["type"].asstring} // move array }); collection.save(item.add("fields", formfields)); } test:
> db.so.remove() > db.so.insert({_id: "12345", name: "jon smith", type: "employee"}) > db.so.find() { "_id" : "12345", "name" : "jon smith", "type" : "employee" } > // ran application here > db.so.find() { "_id" : "12345", "name" : "jon smith", "type" : "employee", "fields" : [{"id" : objectid("52039e395bddbf23f8cc0888"), "name" : "jon smith", "type" : "employee" } ] } fyi: requeststart returns idisposable object. i'm not sure why you're trying use it, you're using incorrectly.
Comments
Post a Comment