2015-09-18 3 views
-2

Я искал онлайн помощь в отношениях MongoDB Foreign Key.MongoDB, Mongoose, Внешние ключи, Таблицы соединения

Я задавался вопросом, можно ли реализовать отношения первичного/внешнего ключа в MongoDB, аналогичные MYSQL?

Если нет, есть ли какой-либо другой пакет узлов, который кто-то рекомендовал бы использовать?

Я просто хочу связать две коллекции, студентов и класс? Если кто-то сможет помочь, это будет фантастично. Спасибо.

+0

Я думаю, что это разумный вопрос. Если вы новичок в Mongodb и пришли из базы данных реляционной базы данных, это нормально, чтобы задавать эти вопросы. – robjwilkins

ответ

0

Монгорский эквивалент «первичного ключа» - это поле _id каждого документа. По умолчанию он заполняется уникальным ObjectId, но когда у вас есть более подходящий первичный ключ для ваших данных, вы можете назначить это поле _id (когда ваш «первичный ключ» представляет собой несколько полей, сделайте его поддокументом, назначенным для _id).

В MongoDB явно не указано отношение внешних ключей между документами. В конце концов, это не реляционная база данных. Это, конечно же, не мешает вам иметь «необъявленные» внешние ключи в форме поля в каждом документе Student, который является уникальным идентификатором документа Class, которому он принадлежит.

В качестве альтернативы вы можете вставлять Student s, которые принадлежат к одному и тому же Class как массив в документе Class. Независимо от того, хорошо это или нет, зависит от того, как вы собираетесь использовать свои данные.

Идеальная схема MongoDB зависит не столько от того, как структурированы ваши данные, сколько от того, какие запросы вы хотите выполнять на ней. Когда вы разрабатываете схему данных, то одна важная вещь, которую должен использовать пользователь реляционной базы данных, - это то, что MongoDB не делает JOINs. Когда вы хотите присоединиться, вам необходимо выполнить их в приложении. Поэтому вам следует избегать любых конструкций, требующих получить данные из более чем одной коллекции для любых критически важных вариантов использования.

+0

Благодарим за ответ - и извините за плохой вопрос. Я новичок в использовании Mongo. Вы бы рекомендовали использовать узел MySQL пакет? Это выглядит лучше для реляционной базы данных и мне лучше. – user3180997

+0

@ user3180997 Я никогда не использовал его, поэтому я ничего не могу сказать об этом. Но только потому, что MongoDB популярен среди многих разработчиков Node.js, это не значит, что это лучшая технология для * любого * проекта. – Philipp

Смежные вопросы