查询一个嵌套的数组对象
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);
}
});
}
};
Json数据
[
{
"__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);
}
});
}
};
相关文章:
- 从多维嵌套json数组创建下拉列表
- 如何通过json对象数组为嵌套对象赋值
- 为循环嵌套的Javascript未按预期返回数组
- 具有嵌套对象数组的 Javascript 对象的递归搜索函数
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- MongoDB嵌套对象数组后查询
- 从对象数组中动态创建嵌套json
- 使用Angular.js解析JSON中的嵌套对象数组
- 如何将id数组与带下划线的对象数组嵌套属性进行比较
- 将JS对象数组转换为嵌套形式的最有效方法
- 在javascript/angular中创建播放列表(按值复制数组,但按引用设置嵌套对象)
- 嵌套在 ng 重复中的拼接数组
- 嵌套/同心组和mouseenter/mouseleve
- javascript获取嵌套子数组中的对象
- 嵌套捕获组结果
- 如何在嵌套级别不受限制的情况下显示对象的动态嵌套子数组对象
- 按嵌套子数组对 arr 进行排序
- 播放框架 - 表单不绑定到嵌套元组
- 遍历嵌套到组和节中的一组输入
- 在数组和嵌套子数组中搜索Lodash属性