#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»‘ .