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