2012-03-06 5 views
2

Предположим, например, у меня есть 2 коллекции комментариев и пользователей. Комментарии включают имя пользователя и комментарий, а пользователи имеют имя пользователя и аватар. При получении комментариев я также хочу отображать аватары, как я должен запрашивать две коллекции? Моя первая мысль заключалась в том, чтобы получить все комментарии, а затем повторить именовать имена пользователей и запросить коллекцию пользователей, чтобы получить аватары. Могу ли я сделать это по-другому? Использование nodejs и mongooseПолучение данных из нескольких коллекций в mongodb

ответ

3

Populate вероятно, что вы ищете:

http://mongoosejs.com/docs/populate.html

Оклейка некоторые здесь для потомков: ObjectIds теперь может сослаться на другой документ в коллекции в нашей базе данных и будет заселить() d при запросе. Пример полезен:

var mongoose = require('mongoose') 
, Schema = mongoose.Schema 

var PersonSchema = new Schema({ 
    name : String 
    , age  : Number 
    , stories : [{ type: Schema.ObjectId, ref: 'Story' }] 
}); 

var StorySchema = new Schema({ 
    _creator : { type: Schema.ObjectId, ref: 'Person' } 
    , title : String 
    , fans  : [{ type: Schema.ObjectId, ref: 'Person' }] 
}); 

var Story = mongoose.model('Story', StorySchema); 
var Person = mongoose.model('Person', PersonSchema); 
+0

Как бы выглядел результат запроса? –

+0

Ты спас мне жизнь! : D – Sparw

3

Если бы я мог комментировать, я бы ответил, что это может быть не полный ответ. Но для меня Database References и MongoDB Data Modeling and Rails - неплохие объяснения по теме в целом.

Но определенно то, что вы описываете, является тем, что обсуждается в первой ссылке, которую я отправил.

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