Это отношения один-к-одному. Лучше встраивать один документ в другой, а не поддерживать отдельные коллекции. Проверьте здесь о том, как их моделировать в mongodb и их преимуществах.
Хотя в документах это явно не упоминается, встраивание дает тот же эффект, что и ограничения внешнего ключа. Просто хочу прояснить эту идею. Если у вас есть две такие коллекции:
С1:
{ "_id" : 0 , "owner":0 "name":"Doc1"},{ "_id" : 1 , "owner":1, "name":"Doc1"}, etc
С2:
{ "_id" : 0 , "username":"John"}, { "_id" : 1 , "username":"Sam"}
И если вы объявите ограничение внешнего ключа на C2._id
для ссылки на C1._id
(при условии, что MongoDB позволяет это), это будет означать, что вы не можете вставить документ в C2
, где C2._id
не существует в C1
. Сравните это со встроенным документом:
{
"_id" : 0 ,
"owner" : 0,
"name" : "Doc1",
"owner_details" : {
"username" : "John"
}
}
Теперь поле owner_details представляет данные из коллекции C2, а остальные поля представляют данные из C1. Вы не можете добавить поле owner_details в несуществующий документ. По сути, вы достигаете того же эффекта.