Получение данных из нескольких коллекций в mongodb - PullRequest
2 голосов
/ 07 марта 2012

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

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

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

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

Приклеиваем сюда сюда для потомков: ObjectIds теперь могут ссылаться на другой документ в коллекции в нашей базе данных и быть populate () 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);
3 голосов
/ 07 марта 2012

Если бы я мог прокомментировать, я бы не стал полным ответом.Но для меня Ссылки на базу данных и MongoDB Data Modeling и Rails являются довольно хорошими объяснениями по теме в целом.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...