更新子文档不工作nodejs mongodb express

我有这个端点:

restaRouter.route('/lists/:id/') .post(function(req, res) { db.Restaurant.update({_id: req.params.id}, { $push: { reviews: req.body }}, function(err, doc) { if (err) { res.send(err); } res.json(doc); }) }); 

当我做一个职位,它应该find这样的文件使用_id_id是dynamic生成的:

 { "_id": "571616e420cac41111e90ecf", "title": "Yep", "address": "Somewhere", "about": "Everything", "reviews": [ { "name": "My name", "email": "email@gmail.com", "message": "My message" } ] } 

并将项目作为子文档推送到评论字段。

req.body看起来像这样:

 { "name": "foo", "email": "foo@bar.com", "message": "myFoo bar" } 

我知道一个json对象是什么打到端点? 是。 一个console.log(req.body)确认。

此刻,当我发布,我回来的回应是

 { "ok": 1, "nModified": 0, "n": 0 } 

那么没有任何修改。 我究竟做错了什么? 我怀疑这与此有什么关系,但是我正在使用mongojs

在你的查询中,你必须使用{_id:ObjectId('myobectID')}

所以你的例子:

 db.Restaurant.update({_id: ObjectId(req.params.id)}, { $push: { reviews: req.body }}, function(err, doc) { ... } 

mongojs具体

由于OP提到mongojs ,同样可以做到:

 db.Restaurant.update({_id: mongojs.ObjectId(req.params.id)} ...