从mongodb中的多个集合中获取数据

时间:2012-03-06 22:06:58

标签: node.js mongodb mongoose

比方说,我有2个集合评论和用户。评论包括用户名和评论,用户有用户名和头像。在检索评论时我还想显示头像,我应该如何查询这两个集合?我的第一个想法是获取所有注释,然后迭代用户名并查询用户集合以获取头像。我可以这样做吗?使用nodejs和mongoose

2 个答案:

答案 0 :(得分:3)

如果我可以发表评论,我认为这可能不是一个完整的答案。但对我来说 Database ReferencesMongoDB Data Modeling and Rails对该主题的解释非常好。

但是你所描述的肯定是我发送的第一个链接中讨论的内容。

答案 1 :(得分:3)

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);