2013-11-13 3 views
1

Как смоделировать отношения «один-к-одному» между родительским документом и встроенным документом в MongoDB? Функция заполнения Мангуста удовлетворит мои потребности, но в ней используется ссылка, а не фактический поддокумент.Отношения «один-к-одному» Mongoose с вложенными документами

+0

Вы можете посмотреть мою модель проекта https: // github. com/cubuzoa/expressSimpleBlog/blob/master/models/Blog.js. Я не использую отображение. Например, у меня есть модель блога и модели комментариев, встроенные в эту модель блога. Вы можете использовать ту же стратегию. –

+0

Возможный дубликат [Mongoose Sub-Document без массива?] (Http://stackoverflow.com/questions/19635807/mongoose-sub-document-without-array) –

+0

Если я правильно понимаю OP, я думаю, что это дубликат http://stackoverflow.com/questions/19635807/mongoose-sub-document-without-array. И в основном ответ Mongoose не поддерживает встроенные документы «один-к-одному»: https://github.com/LearnBoost/mongoose/pull/585 –

ответ

0

Хотя ваш вопрос не так ясен, я думаю, это может вам помочь. Помимо schema types, вы можете использовать свою схему в другом. Как это было сделано в примере ниже:

var Comments = new Schema({ 
    title  : String 
    , body  : String 
    , date  : Date 
}); 

var BlogPost = new Schema({ 
    author : ObjectId 
    , title  : String 
    , body  : String 
    , date  : Date 
    , comments : [Comments] //Here is the Embedded schema 
    , meta  : { 
     votes : Number 
     , favs : Number 
    } 
}); 
+0

Это не взаимно-однозначное отношение, так как ОП просил , поэтому он не решает вопрос, поднятый ОП. Тем не менее, это единственный способ реализовать схемы в субдоке в мангусте. – steampowered

0

Mongoose не поддерживает функцию MongoDB в Embedded documents in a one-to-one relationship to the parent document с полной проверкой/Крючки набора функций. Вы можете хранить смешанный литерал JSON-объекта в свойстве, но вы не можете использовать функции Mongoose с этим объектом json.

Это ограничение Mongoose от 4.0. Разработчики утверждают, что это ограничение преднамеренно, чтобы гарантировать, что функция крючков Mongoose работает правильно, но есть много поддержки среди пользователей для реализации решения: https://github.com/Automattic/mongoose/pull/585

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