Node.js 在mongoose中创建数组元素

Node.js 在mongoose中创建数组元素,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,这是我的模式 team_year: String, team: [{ _leader: String, _member:[{ _name: String, _phone: String, _age: Number, _gender: String, _comment:[{ _date: String, _contents: String,

这是我的模式

team_year: String,
team:  [{
    _leader: String,
    _member:[{
        _name: String, 
        _phone: String,
        _age: Number,
        _gender: String, 
        _comment:[{
            _date: String, 
            _contents: String,
            _attendance: Boolean
        }]
    }]
}]
我有数据

{ team_year: 2015
    team: [
        {
          _leader: tom
          _member: [
              {_name: mike,
               _phone: 2222
          ]
        },
        {
          _leader:jack,
          _member: []
        }
    ]
}
我想注册杰克的一名队员

    team_schema.findOneAndUpdate(
        {team_year: '2015', 'team._leader' : 'jack'}, 

        {$push: {
                'team._member': req.body
            }
        },
        function(err, post){
        if (err) next(err);
        res.end("success");
    }); 
但它不起作用。 请帮帮我

我用 Node.js+express+MongoDB


我的英语不好。T^T

您需要指定要为其插入对象(嵌套数组)的对象的索引。为此,可以使用MongoDB提供的位置运算符(“$”)。有关更多信息,请参阅

因此,这个查询应该可以工作:

team_schema.findOneAndUpdate(
    {team_year: '2015', 'team._leader' : 'jack'}, 

    {$push: {
            'team.$._member': req.body              //The $ symbol resolves to an index from the query
        }
    },
    function(err, post){
    if (err) next(err);
    res.end("success");
}); 

ranch.r_会员是什么?我在这里的schemaSee中找不到一个好答案: