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

Popular posts from this blog

matlab - Deleting rows with specific rules -

php - MySQLi multi_query results for later use -