Как настроить запрос на выбор элемента массива в mongoose

#node.js #mongodb #mongoose

#node.js #mongodb #mongoose

Вопрос:

В этом документе мне нужно обновить готовое поле только для одного элемента массива введите описание изображения здесь

но я не знаю, как задать запрос, я получаю сообщение об ошибке, это мой неполный код

 updateUserState = function(req,res){
    var query = {_id: req.body.game_id};
    var update = {$set: { users: { ready: true }}};
    var options = {'new': true, 'safe': true, 'upsert': true};
    Game.findOneAndUpdate(query,update,options, function(err,data){
        if(err)res.send(err)
        else res.send(data)
    })
}
 

Я хочу выбрать по _id, который он сделал, и добавить в select by users.user , но я не знаю, как

Комментарии:

1. Решение сработало для вас?

Ответ №1:

Концепции

  • field.$[].subField для обновления каждого подполя,
  • field.$[element].subField наложить условие на элемент.

Код

 updateUserState = function(req,res){
    var query = {_id: req.body.game_id};
    var update = {$set: { users.$[thisone].ready: true }}};
    var options = {'new': true, 'safe': true, 'upsert': true, 
    arrayFilters:[{ "thisone._id":<idhere> }] } 
    };
    Game.findOneAndUpdate(query,update,options, function(err,data){
        if(err)res.send(err)
        else res.send(data)
    })
}