Задать вопрос
@Faradey
программист, php, golang

Как реализовать такое в MongoDB на php?

Например, есть коллекция пользователей, которые могут иметь много автомобилей, а каждый автомобиль конкретного пользователя может иметь различные детали никак не связанные с другими автомобилями пользователей. Автомобили и их детали никак не связаны между собой и не будут связаны между собой. Это только для примера.
Вот как это выглядит на примере JSON
{name: Vova,
avto:[
{
name: Lada, detali: [motor, hodovaya, rama]
},
{
name: Zaz, detali: [motor, hodovaya]
}]
}

Вопрос как такое реализовать, чтобы потом можно было как обновлять так и удалять детали или автомобили у пользователя. Я только перехожу с sql на nosql по надобности в одном проекте. Если есть уже где-то статья по данному вопросу, ткните...

Уже нашел как такое реализовать. Получается, чтобы изменить какую-то деталь нужно вытянуть полностью один документ коллекции в переменную и в ней найти эту деталь, изменить и потом сохранить полностью этот измененный документ?
  • Вопрос задан
  • 2516 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 2
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Почитайте little mongo book, полностью, она небольшая.
В Вашем случае необходимо update - set (2 глава этой книги)

Вообще может архитектура БД не совсем удобная?
Я бы сделал коллекцию документов с запчастями стандартными под авто.
А в колллекции с клиентами, в случае, если они тюнингуют - новые их детали и с ними работал бы уже, добавляя id авто и уникальные детальки.

Но я не уверен до конца, т.к. хз что за задача стоит, может это ужасный пример архитектуры под проект в целом
Ответ написан
Комментировать
Комментировать
Пригласить эксперта
Ответы на вопрос 2
akubintsev
@akubintsev
Опытный backend разработчик
Честно говоря на этом примере не увидел нужды уходить на Монгу.
Бессхемность нужна там, где пришлось бы делать 100500 полей в таблице, из которых для каждой записи заполнялось скажем 10.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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