Node.js mongodb通过ObjectID更新

我想更新我的文档,但它不是100%的工作。

// Initialize connection once MongoClient.connect("mongodb://localhost:27017/testDB", function(err, database) { //"mongodb://localhost:27017/test" if(err) throw err; db = database; }); 

我的collections行如下所示:

{“_id”:ObjectId(“53f9379ce9575bbe9ec29581”),“name:paco”,“status:student”}

现在,如果我想要更新文档上的行,如下所示:

 db.collection('user', function(err, collection){ collection.update({'_id':ObjectID(req.session.loggedIn)}, {image : filename}, {w:1}, function(err, result){ console.log(result); 

我只是得到:

{“_id”:ObjectId(“53f9379ce9575bbe9ec29581”),“image:filename”}

我如何进行更新以获取像这样的数据?

{“_id”:ObjectId(“53f9379ce9575bbe9ec29581”),“name:paco”,“status:student”,“image:filename”}

按照您所做的方式进行update将使用指定的_id检索集合中的文档,然后将用您指定的第二个参数replace此文档的内容。 在你的情况下,它将检索_id 53f9379ce9575bbe9ec29581文件,并用你传递的字段replace现有的字段, image:filename (这意味着现有的领域将被删除,你注意到)。

你想要做的是使用$set操作符。 该操作符不会触及检索到的文档,只能修改您指定的字段,或者在不存在的情况下添加它。

所以你的更新命令应该是这样的:

 db.collection('user').update({'_id':ObjectID(req.session.loggedIn)}, {$set: {image : filename}}, {w:1}, function(err, result){ console.log(result); 

通过_id更新logging

 var ObjectID = require('mongodb').ObjectID; exports.updateUser = function(req, res) { var collection = db.collection('users'); collection.update(where, $set:req.body, function(err, result) { if (err) { console.log('Error updating user: ' + err); res.send({'error':'An error has occurred'}); } else { console.log('' + result + ' document(s) updated'); res.send(user); } }); }