Mongodb保存到嵌套的对象?

我无法将我的req.body插入到我的mongodb集合中。

我有这条路线,触发add方法和里面我试图找出一个查询来保存req.body到一个嵌套的集合数组

router.post('/api/teams/:tid/players', player.add);

 add: function(req, res) { var newPlayer = new models.Team({ _id: req.params.tid }, req.body); newPlayer.save(function(err, player) { if (err) { res.json({error: 'Error adding player.'}); } else { console.log(req.body) res.json(req.body); } }); } 

这是一个示例文件

 [ { "team_name":"Bulls", "_id":"5367bf0135635eb82d4ccf49", "__v":0, "players":[ { "player_name":"Taj Gibson", "_id":"5367bf0135635eb82d4ccf4b" }, { "player_name":"Kirk Hinrich", "_id":"5367bf0135635eb82d4ccf4a" } ] } ] 

我不知道如何插入/保存POST req.body这是类似的东西

 { "player_name":"Derrick" } 

这样新的req.body现在被添加到players对象数组中。

我的问题是如何设置mongodb / mongoose查询来处理这个?

PS我很明显得到错误消息,因为我不认为该查询是有效的,但这只是一种想法,我想要做的。

像这样的东西更合适,但仍然不起作用,但我猜它是一个更好的例子

var newPlayer = new models.Team({ _id: req.params.tid }, { players: req.body });

如果您在Mongoose中创build了一个Team模型,那么您可以调用内置方法findOneAndUpdate

 Team.findOneAndUpdate({ _id: req.params.tid }, { $addToSet: { players: req.body} }, function(err, doc){ console.log(doc); }); 

你可以find一个, update ,然后save ,但上述更直接。 $addToSet只会在问题中的特定更新不在数组中时才添加。 你也可以使用$push

以上内容在很大程度上取决于你如何configuration你的模型,如果你确实使用了Mongoose(但是显然你问了如何在Mongoose中完成,所以我提供了这个方法作为一个可能的解决scheme)。

$addToSet的文档位于http://docs.mongodb.org/manual/reference/operator/update/addToSet/ ,相关操作如下:

 db.collection.update( <query>, { $addToSet: { <field>: <value> } } );