Монгорский эквивалент «первичного ключа» - это поле _id
каждого документа. По умолчанию он заполняется уникальным ObjectId, но когда у вас есть более подходящий первичный ключ для ваших данных, вы можете назначить это поле _id
(когда ваш «первичный ключ» представляет собой несколько полей, сделайте его поддокументом, назначенным для _id
).
В MongoDB явно не указано отношение внешних ключей между документами. В конце концов, это не реляционная база данных. Это, конечно же, не мешает вам иметь «необъявленные» внешние ключи в форме поля в каждом документе Student
, который является уникальным идентификатором документа Class
, которому он принадлежит.
В качестве альтернативы вы можете вставлять Student
s, которые принадлежат к одному и тому же Class
как массив в документе Class
. Независимо от того, хорошо это или нет, зависит от того, как вы собираетесь использовать свои данные.
Идеальная схема MongoDB зависит не столько от того, как структурированы ваши данные, сколько от того, какие запросы вы хотите выполнять на ней. Когда вы разрабатываете схему данных, то одна важная вещь, которую должен использовать пользователь реляционной базы данных, - это то, что MongoDB не делает JOINs. Когда вы хотите присоединиться, вам необходимо выполнить их в приложении. Поэтому вам следует избегать любых конструкций, требующих получить данные из более чем одной коллекции для любых критически важных вариантов использования.
Я думаю, что это разумный вопрос. Если вы новичок в Mongodb и пришли из базы данных реляционной базы данных, это нормально, чтобы задавать эти вопросы. – robjwilkins