[英]Mongo db - Querying a nested array of objects
我真的很努力用下面的数据构建REST api,在客户端上一切正常,但是当我需要发出POST请求更新players
我不知道如何查询mongodb。
路线
router.get('/api/teams/:teamid/player/:playerid', player.getById);
mongodb查询
module.exports = {
getById: function(req, res) {
models.Team.findOne({"players.player_name":"Jokim"}, function(err, player) {
if (err) {
res.json({error: 'player not found.'});
} else {
console.log(player);
res.json(player);
}
});
}
};
杰森数据
[
{
"__v":0,
"_id":"5362dcf7e99615aa392d7d72",
"assists":80,
"blocks":14,
"feed":null,
"fouls":20,
"made_one":10,
"made_three":5,
"made_two":15,
"missed_one":4,
"missed_three":4,
"missed_two":20,
"percentage":50,
"points":44,
"rebounds":100,
"steals":33,
"team_name":"Bulls",
"players":[
{
"player_name":"Jokim",
"_id":"5365f079ed4914600d9342c7",
"team_name":"",
"team_id":"",
"points":0,
"made_one":0,
"made_two":0,
"made_three":0,
"missed_one":0,
"missed_two":0,
"missed_three":0,
"percentage":0,
"assists":0,
"rebounds":0,
"steals":0,
"blocks":0,
"fouls":0,
"feed":""
},
{
"player_name":"Taj",
"_id":"5365f079ed4914600d9342c6",
"team_name":"",
"team_id":"",
"points":0,
"made_one":0,
"made_two":0,
"made_three":0,
"missed_one":0,
"missed_two":0,
"missed_three":0,
"percentage":0,
"assists":0,
"rebounds":0,
"steals":0,
"blocks":0,
"fouls":0,
"feed":""
}
]
},
{
"team_name":"Wizards",
"points":44,
"made_one":10,
"made_two":15,
"made_three":5,
"missed_one":4,
"missed_two":20,
"missed_three":4,
"percentage":50,
"assists":80,
"rebounds":100,
"steals":33,
"blocks":14,
"fouls":20,
"feed":null,
"_id":"5362dcf7e99615aa392d7d75",
"__v":0,
"players":[
{
"player_name":"John Wall",
"points":22,
"made_one":3,
"made_two":4,
"made_three":5,
"missed_one":2,
"missed_two":3,
"missed_three":4,
"percentage":5,
"assists":2,
"rebounds":2,
"steals":2,
"blocks":5,
"fouls":3,
"feed":null,
"facebook_id":null,
"_id":"5362dcf7e99615aa392d7d77"
},
{
"player_name":"Bradley Beal",
"points":22,
"made_one":3,
"made_two":4,
"made_three":5,
"missed_one":2,
"missed_two":3,
"missed_three":4,
"percentage":5,
"assists":2,
"rebounds":2,
"steals":2,
"blocks":5,
"fouls":3,
"feed":null,
"facebook_id":null,
"_id":"5362dcf7e99615aa392d7d76"
}
]
}
]
当您尝试在玩家数组中搜索时,我认为您将必须使用elemMatch:
请找到与此相关的文档: http : //docs.mongodb.org/manual/reference/operator/projection/elemMatch/
PS:我还没有尝试过,因为我的系统上现在没有NodeJS和Mongo。
通常人们使用PUT
方法来更新模型。
检查mongodb文档中的更新方法。
路线
router.put('/api/teams/:teamid/player/:playerid', player.updatePlayer);
控制者
module.exports = {
updatePlayer: function(req, res) {
models.Team.update({"players.player_name":"Jokim"}, {$set: {assist: 100}}, function(err, player) {
if (err) {
res.json({error: err});
} else {
console.log(player);
res.json(player);
}
});
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.