为什么Node + MongoDB使用addToSet更新无法更新数组

我无法弄清楚这一点,我已经尝试使用terminal执行相同的查询,它是成功的。 我应该注意,同样的查询返回一行使用MongoHub时,但检查logging后没有改变。 下面是mongo设置和更新操作。

var mongo = require('mongodb'); var Server = mongo.Server, Db = mongo.Db, BSON = mongo.BSONPure; var server = new Server('localhost', 27017, {auto_reconnect: true}); db = new Db('help', server, {safe: true}); type = 'issues'; id = 2; body = { comments: '64' }; db.collection(type, function(err, collection) { collection.update({id:id}, {$addToSet: body}, {safe:true}, function(err, result) { if (err) { console.log('Error updating: ' + err); res.send({'error':'An error has occurred'}); } else { console.log('' + result + ' document(s) updated'); res.send(type); } }); }); //Mongo Collection Record { "_id" : ObjectId( "511c000d994cde0d02adf1ba" ), "comments" : [ 1, 2, 3 ], "id" : 2, "text" : "This is another issue test", "title" : "Another Issue Test" } 

任何帮助是极大的赞赏

事实certificate,我不是parsingvariablesid作为我从req.params得到的整数,我应该包括我从req.params对象获取id。

 var id = parseInt(req.params.id); 

解决了这个问题。

似乎这部分有几个问题

 db.collection(type, function(err, collection) { collection.update({id:id}, {$addToSet: body}, {safe:true}, 

我没有看到第一行中定义的typesvariables。 这意味着收集可能没有find。 但是你在这两行之间没有任何错误检查这个问题。

在更新语句中,应该有{_id:ObjectId(id)},其中id应该是511c000d994cde0d02adf1ba。

这些都是显而易见的问题。