MongoDB хранит массивы ObjectId's
В моей базе данных я должен хранить массив идентификаторов объектов. Что я должен использовать? Что-то вроде этого:
[ObjectId("50350e12a36feb1be6000364"), ObjectId("57350e12a37fef1be6000922"), ObjectId("10350e17d34ffb1be6200925")]
или что-то вроде этого:
["50350e12a36feb1be6000364", "57350e12a37fef1be6000922", "10350e17d34ffb1be6200925"]
Я мог бы сэкономить место со вторым, а затем применить к ObjectId
, но я что-то теряю, используя этот подход? Do ObjectId
ведут себя как внешние ключи в реляционных базах данных?
Ответы
Ответ 1
Я бы определенно пошел с первым подходом, сохранив ObjectId
напрямую. Это экономит пространство, поскольку ObjectId
составляет 12 байт, тогда как вторая строка подхода - 24 байта.
Кроме того, если ObjectId
используется для извлечения объектов позже, сохранение в качестве ObjectId
сохраняет некоторые проблемы.
Ответ 2
Если у вас нет веских оснований, сохраните их как массив ObjectIds. Он более компактный (12 байт против 24), и он более точно отражает то, что хранится. Он также может включить поддержку уровня драйвера для следующих ссылок ObjectId.