我想實現 "update mytable set isdel=1 where id='123456789'"
我用的是samus驅動
連結我就不說了,說重點的。
這是查詢出得資料。
{ "_id" : ObjectId("4ed4a56912842309d072c2ef"), "id" : "123456789", "userid" : "10000", "tiitle" : "test", "content" :"testcontent", "isdel" : 0 }
public int Delete(string id) { Document doc = new Document(); doc["isdel"] = 1; using (MyMongoDb mdb = new MyMongoDb()) { var collection = mdb.GetCollection<LOGS>(); collection.Update(doc, x=>x.id=id); } return 1; }
結果是更新了,可是把整個一行都給更新了只留了一個isdel欄位。
{ "_id" : ObjectId("4ed4a56912842309d072c2ef"), "isdel" : 1 }
public int Delete(string id) { Document doc = new Document(); doc["isdel"] = 1; using (MyMongoDb mdb = new MyMongoDb()) { var collection = mdb.GetCollection<LOGS>(); collection.FindAndModify(doc, new Document { { "id", id } }); } return 1; }
看看有沒有別的方法吧,找了很久發現了,FindAndModify方法。
執行一下,看看結果。
{ "_id" : ObjectId("4ed4a56912842309d072c2ef"), "id" : "123456789", "userid" : "10000", "tiitle" : "test", "content" :"testcontent", "isdel" : 1 }
成功,呵呵。
這就是Update和FindAndModify的區別。