Задать вопрос
@a1en_yeah

Как добавить поле в поддокумент MongoDB не удалив уже существующие поля?

Помогите, логика мне непонятна!
У меня есть коллекция фотогаллерей, и каждая из них может иметь массив альбомов.
И галлерея и альбомы могут иметь свою картинку превьюшку для отображения в списке.
Я добавляю поле image к галерее без проблем, и всё нормально мержится:

db.photos.update({_id:"1587050015794"},{$set:{image:"image.link"}})

Но к альбому не получается добавить поле, не обнулив уже имеющиеся. Старый объект заменяется новым, поэтому я обязан отправлять все поля чтобы не потерять их....
Отправляю вот такой вот запрос.

db.photos.update({"_id" : "1587050015794","albums._id": "1587050121637"},{$set: {'albums.$':{image:"image.link"}}})


{
        "_id" : "1587050015794",
        "slug" : "1",
        "description" : {
                "fr" : "1",
                "ru" : "1"
        },
        "albums" : [
                ...,
               {
                        "_id" : "1587050121637",
                        "slug" : "11",
                        "description" : {
                                "fr" : "11",
                                "ru" : "11"
                        },
                        "gallery" : [ ]
                },
                ...
}

Спасибо!
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
hzzzzl
@hzzzzl
для добавки в массив $push
https://docs.mongodb.com/manual/reference/operator...

db.photos.update(
 {_id:"1587050015794"}, 
 { $push: { 
    albums: { slug: 6666666 } 
 } 
)
Ответ написан
Комментировать
@a1en_yeah Автор вопроса
Но ведь мне не надо добавлять новый альбом, а нужно в нём изменить одно свойство, или добавить его.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы