Рекомендации по реализации внешнего ключа MongoDB ObjectId - PullRequest
1 голос
/ 09 декабря 2011

Я ищу рекомендации о том, как лучше всего реализовать поля внешнего ключа MongoDB ObjectId. Кажется, есть два возможных варианта, либо с вложенным полем _id, либо без него.

Посмотрите на поле fkUid ниже.

{'_id':ObjectId('4ee12488f047051590000000'), 'fkUid':{'_id':ObjectId('4ee12488f047051590000001')} } 

ИЛИ

{'_id':ObjectId('4ee12488f047051590000000'), 'fkUid':ObjectId('4ee12488f047051590000001')} }

Любые рекомендации будут высоко оценены.

Ответы [ 4 ]

7 голосов
/ 09 декабря 2011

Мне трудно придумать какие-либо возможные преимущества для добавления дополнительного "слоя" в поле, поэтому я лично просто храню ObjectId непосредственно в fkUid.

1 голос
/ 09 декабря 2011

Я предлагаю использовать реализацию dbref по умолчанию, которая описана здесь http://www.mongodb.org/display/DOCS/Database+References и совместима с большинством определенных языковых драйверов.

0 голосов
/ 10 октября 2016

Оба упомянутых вами способа имеют одно и то же значение. Но у них разный вид использования.

Хранение fkUid как 'fkUid':{'_id':ObjectId('4ee12488f047051590000001')} у объекта есть свои плюсы. Позвольте мне привести пример. Предположим, что существует веб-сайт, на котором пользователи могут публиковать изображения и просматривать изображения, опубликованные другими пользователями. Но при показе изображения на сайте также отображается имя / имя пользователя. Используя этот способ, вы также можете хранить детали, такие как 'fkUid':{'_id':ObjectId('4ee12488f047051590000001'), username: 'SOME_X'}. Когда вы получаете данные из базы данных, вам не нужно повторно отправлять запрос, чтобы получить имя пользователя для конкретного _id.

Где, как и во втором способе 'fkUid':ObjectId('4ee12488f047051590000001')} }, вам нужно отправить другой запрос на сервер только для получения имени / имени пользователя, и ничто другое не пригодится из того же объекта.

0 голосов
/ 09 декабря 2011

Если ваш вопрос касается именования поля (что у вас есть в заголовке), обычно принято называть его в честь объекта, к которому оно относится.

...