Как увеличить новое поле в мангусте, а не обновлять весь документ целиком?

#node.js #mongodb #express #mongoose

Вопрос:

У меня есть функция контроллера, которая успешно обновляет мои документы групп с помощью массива контактов, за исключением того, что она перезаписывает старый контакт, если я добавляю другой в базу данных, поэтому в моем документе может быть не более 1 контакта одновременно. Есть ли способ просто добавить новый контакт при обновлении, а не заменять существующий контакт?

Вот моя функция контроллера

    const createContact = async (req, res) => {
                const { phone_number, country, phone_type, group, firstName, lastName, company, email} = req.body
                
                     // we have success gotten group._id and made it into an object

                const newContact = new Contact({
                                                                          //[    // group array of objects
                                                                          //  {
                                                                          //    contacts: [],
                                                                          //    _id: '60d2d43345f1de1135185efe',
                                                                          //    title: 'vacant',
                                                                          //    created: '2021-07-27T19:40:01.600Z'
                                                                          //  },
                                                                          //  {
                                                                          //    contacts: [],
                                                                          //    _id: '60ff432fa2f369134d838e3c',
                                                                          //    title: 'yellow belts',
                                                                          //    created: '2021-07-26T23:20:15.933Z'
                                                                          //  }
                                                                          //]
                    phone_number: phone_number,
                    country: country,
                    group: group, // this group coming in is an array of objects, each object has array of contacts
                    phone_type: phone_type,
                    firstName: firstName,
                    lastName: lastName,
                    company: company,
                    email: email,
                    _user: req.user.id
                })
                const createdContact = await newContact.save() // I now have acces to this objectId
                console.log(createdContact._id) // we need to push this into each groups contact array
                const GroupId = group.map(groups => groups._id) 
                const ChosenGroups = await (await Group.updateMany({ '_id': { $in: GroupId}}, {$set: {contacts : createdContact._id}}));
                console.log(ChosenGroups)
                res.status(201).json(createdContact)
            }```
 

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

1. Вы пробовали использовать $push ?

2. это сработало, Джо, спасибо за твой ответ. Я новичок в mongo db и не знал, что есть оператор push! Я запишу вам ответ и отправлю ответ