mongoose如何在ref字段上执行聚合

时间:2013-12-24 10:09:20

标签: node.js mongodb reference mongoose aggregation-framework

如何在mongoose上对基于其他模式的ref的字段执行聚合。

例如:低于id的架构

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

如何与创作者和粉丝进行聚合

提前致谢

1 个答案:

答案 0 :(得分:-2)

您可以使用populate功能,文档:http://mongoosejs.com/docs/populate.html

populate将帮助您查找基于ObjectIds和ref集合的数据:

Story
  .findOne({title: 'your title'})
  .populate(['_creator', 'fans'])
  .exec(function (err, doc) {
    console.log(doc);
})

输出:

{ _id: 52b9768a8a770b383d000003,
  title: 'your title',
  _creator: { name: 'user1', _id: 52b975e13e7f2dec31000001, __v: 0 },
  fans:
   [ { name: 'fan1', _id: 52b975e13e7f2dec31000001, __v: 0 },
     { name: 'fan2', _id: 52b975e13e7f2dec31000002, __v: 0 },
     { name: 'fan3', _id: 52b975e13e7f2dec31000003, __v: 0 }] }

您可以删除populate函数以查看结果上的不同