0
我需要從mongo
讀取記錄並從該記錄添加基於信息的新領域(所以我不能做db.my.update()
馬上),我想出了這個代碼:MongoDB是db.update更新記錄的最簡單方法嗎?
var id = '5711298cf896b24fa1529d8e';
var cursor = db.my.find({_id: ObjectId(id)})
if (cursor.count() > 0) {
var rec = cursor.next();
var id = rec._id.valueOf()
db.my.update({_id: ObjectId(id)}, {$set: {newField: 777}});
}
它的工作原理,但我我正在看它,想知道這是否是最乾淨的方法? 我期待像
var id = '5711298cf896b24fa1529d8e';
var cursor = db.my.find({_id: ObjectId(id)})
if (cursor.count() > 0) {
var rec = cursor.next();
rec.newField = 777;
db.my.update(rec); // or even rec.save();
}
我錯過了什麼嗎?
難道你不能簡單地做'db.my.update({_ id:ObjectId('5711298cf896b24fa1529d8e')},{$ set:{newField:777}});'? – chridam
@chridam我在我的問題的第一行給出了答案。 – SmxCde
應該沒有必要先創建一個遊標,[**'update' **](https://docs.mongodb.org/manual/reference/method/db.collection.update/#db- collection-update)操作符將使用查詢作爲更新的選擇標準。與[**'find()'**](https://docs.mongodb.org/manual/reference/method/db.collection.find/#db.collection.find)方法相同的查詢選擇器是可用,所以光標不是必需的 – chridam