Нужен совет по разработке MongoDB - PullRequest
1 голос
/ 09 сентября 2011

Я получил сборку API с PHP и MySQL. Я хочу перенести базу данных в MongoDB, но мне нужен совет по дизайну.

API содержит пользователей и друзей. Я получил одну таблицу для пользователей и одну для друзей (соединений).

Пользователи

- id
- firstname
- lastname
- email
- password

Друзья

- id
- user_id
- friend_id

Я думаю об использовании этого дизайна в MongoDB, это хороший способ, даже если у пользователя есть 1000 друзей?

Пользователи

- id
- firstname
- lastname
- email
- password
-- Friends
--- ID of friend #1
--- ID of friend #2
--- ID of friend #3

Могу ли я использовать идентификатор друга, чтобы получить у друзей весь документ? Это хорошо?

1 Ответ

4 голосов
/ 09 сентября 2011

Да; Это был бы правильный путь. Эта книга объясняет немного больше этого точного метода:

Бесплатная БД Монго

Автор говорит о том, что не имеет присоединений и использует отношения менеджер / сотрудник. В случае, если у вас есть.

Довольно выдающееся чтение, которое может ответить и на другие ваши вопросы.

Вот конкретный фрагмент, на который я ссылаюсь:

Массивы и встроенные документы
То, что у MongoDB нет объединений, не означает, что у него нет рукав. Помните, когда мы быстро увидели, что MongoDB поддерживает массивы как объекты первого класса документа? Оказывается, это невероятно удобно при работе со многими к одному или отношения многие ко многим. В качестве простого примера, если у сотрудника может быть два менеджера, мы могли бы просто сохранить их в массиве:

db.employees.insert({_id: ObjectId("4d85c7039ab0fd70a117d733"), name: 'Siona',
manager: [ObjectId("4d85c7039ab0fd70a117d730"), ObjectId("4
d85c7039ab0fd70a117d732")] }

Особый интерес вызывает то, что для некоторых документов менеджер может иметь скалярное значение, а для другие это может быть массив.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...