Найти и обновить объект во вложенном массиве - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть схема mongoose

{
    id: mongoose.Schema.Types.ObjectId,
    name: String,
    initialMailSended: Boolean,
    email: String,
    users: [{
        id: mongoose.Schema.Types.ObjectId,
        name: String,
        surname: String,
        email: String,
        signedUp: Boolean,
        company: String,
        email: String,
        attending: String,
        accomod: String,
        program: String,
        food: String,
        other: String,
        allFood: String,
        form: [{
            name: String,
            value: String,
        }]
    }]
}

Что мне нужно сделать, это написать запрос mongoose, который находит этот объект по id, а в этом объекте находит пользователя и обновляет его.Я пробовал разные запросы, но не нашел ни одного, который бы работал.

1 Ответ

0 голосов
/ 13 апреля 2019

По вашему вопросу вы можете обновить своего пользователя следующим образом

db.getCollection('collection').findOneAndUpdate(
    {
      _id:ObjectId("5cb19dbc85fdcb7868400107"),       // collection id
     'users._id':ObjectId("5cb19dbc85fdcb7868400185") // user id inside collection
    },

    {$set: {'users.$.name': 'new value'}}            // set name field
)

также посмотреть этот вопрос Обновление вложенного массива с MongoDB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...