MongoDB редактирует документ

#javascript #mongodb

#javascript #mongodb

Вопрос:

Сначала позвольте мне объяснить, с чем я работаю. Итак, у меня есть коллекция пользовательских профилей, которые смоделированы как в plnkr. У меня также есть функция, которой передается массив отредактированных тем. Затем мне нужно выполнить поиск в коллекции UserProfiles соответствующего идентификатора темы и заменить раздел «Темы» документа. Не весь документ. Я знаю о collection.replace() . Но это заменяет весь документ. Мне нужно заменить примерно половину этого. Так, может быть, мне нужно использовать findOneAndUpdate() ? Я не уверен. Я новичок в Mongo.. Я создал plnkr для ссылки на код. plnkr

Ответ №1:

Если вам просто нужно заменить разделы, вы можете просто использовать метод обновления. И если вам нужно отредактировать более одного пользовательского профиля, установите для multi значение true (в случае, если более чем у одного пользователя есть желаемый идентификатор темы).

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

1. Я никогда раньше не видел multi, похоже, именно то, что мне нужно. Потрясающе. Я попробую это сделать.

Ответ №2:

Для этого можно использовать $set.

 db.userProfiles.update(
   { "UserTopics.topicID": "abc"},
   { $set: { "UserTopics.$": editedTopic } }
)
  

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

1. Что именно .$ делает внутри «UserTopics.$»?

2. @AustinHunter, используя «UserTopics.TopicID», вы собираетесь сопоставить элемент в массиве. Итак, $ представляет элемент, выбранный вами с помощью ‘»UserTopics.TopicID»: «abc»‘ .