Обновите определенный элемент в массиве объектов в MongoDB

#mongodb #mongoose

#mongodb #мангуст

Вопрос:

Я пытаюсь добавить новые поля в этот массив и просто обновить их, когда они уже существуют, но мне не удается заставить его работать. Я пробовал многое, но последний метод, который я пробовал, — это тот, что ниже, вот так хорошо… это не работает. Кто-нибудь может мне помочь, пожалуйста?

 if (req.method === 'PATCH') {  const { title, description, socials } = req.body;  const { name, link } = socials;   try {    const user = await User.findOneAndUpdate(  {  email: process.env.EMAIL_USERNAME,  },  {  title,  description,  $set: {  socials: { name, link },  },  }  );  res.status(200).json({  status: 'success',  title,  description,  socials,  });  user.save();  

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

1. Может $set: { socials: {name: 'Facebook', link: 'http://facebook.com'} } быть ?

2. Можете ли вы подробнее объяснить, как выглядит массив? И вы обновляете по электронной почте, названию и описанию фильтров?

3. @WernfriedDomscheit Я думаю, что это работает, но теперь у меня другая проблема. Я получаю массив объектов из интерфейса, и мне нужно проверить, существует ли каждый объект уже, и если да, обновите его. В противном случае создайте его и все равно не сможете управлять

4. @fractal397 Я понял, что неправильно фильтрую, и исправил это. Сейчас я обновлю главный пост, массив, который я получаю с переднего конца, выглядит так [ { name: 'Facebooasdask', link: 'http://12312312' }, { name: 'github', link: 'http://12asdasda2' }, { name: 'linkedin', link: 'http://aaaaa' } ]

5. поэтому я думаю, что на данный момент мне просто нужно выяснить, как перебирать массив, который я получаю с помощью $set, и это должно быть нормально