2014-10-28 3 views
0

Я пытаюсь попасть в MongoDB и Node.js и обнаружил, что самым рекомендуемым модулем для использования является Mongoose. Мне понравилась идея создания схемы, такой как mysql, и она довольно проста в использовании.Почему Mongoose сохраняет ссылки на дочерние элементы в родительской модели?

Одна вещь, которую я не понимал, касается ссылок.

var SessionSchema = new Schema({ 
    created: { type: Date, default: Date.now }, 
    updated: { type: Date, default: Date.now }, 
    client: { type: String, required: true }, 
    events: [{ type: Schema.Types.ObjectId, ref: 'Event', required: true }] 
}); 


var EventSchema = new Schema({ 
    created: { type: Date, default: Date.now }, 
    session: { type: Schema.Types.ObjectId, ref: 'Session', childPath: 'events', required: true }, 
    data: Schema.Types.Mixed 
}); 

В настоящее время возникает вопрос: зачем мне нужно ссылаться на идентификаторы событий изнутри сеанса? Почему бы просто не запросить событияModel.find ({session: session._id})?

Я боюсь, что это создаст огромные сеансовые документы, потому что сессия может иметь даже сотни событий.

Что мне здесь не хватает?

+0

Это ваша схема или вы ссылаетесь на документ или учебник, который это делает? – laggingreflex

+0

Это лишь некоторые из столбцов в схеме. Почему ты спрашиваешь? – sUP

ответ

0

хорошо, что зависит, как правило, общий путь, чтобы сделать эти рода ссылки на потом, чтобы заполнить запрос с данными реферирование, как я извлечь из документации населения:

там не включается в MongoDB, но иногда нам нужны ссылки на документы других коллекций. Это где население приходит.

, если вы заинтересованы в популяции вы делаете взять пик here

вы не можете сделать это вручную никакого вреда от того что зависит от ваших потребностей и запросов.

+0

Достаточно честный. Я думал, что это может быть лучшая реализация, чем просто запрос «eventsModel.find ({session: session._id)») (например, я бы сделал в mysql) – sUP

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