Mongoose使用不同的外键连接两个不同的集合

时间:2017-11-25 13:37:25

标签: node.js mongodb mongoose

用户架构:



{
  username: "milkeypony",
  _id: "_mongodbID",
  id: "random_30_characters_string"
  ...
}




Blog Schema



{
  title: "_title",
  _id: "_mongodbID",
  author: "random_30_characters_string"
  ...
}




Blogs.authorUsers.id

中的ID相同

我尝试做的是当我使用Blogs.findOne()获取一些博文时,Mongoose也会帮我提取一些用户数据。

我已经使用原始Mongo shell命令

成功完成了这项工作



db.blogs.aggregate([
  {
    $lookup: {
      from: "users",
      localField: "author",
      foreignField: "id",
      as: "author"
    }
  }
])




我尝试使用猫鼬populate方法,但它并没有为我做好

1 个答案:

答案 0 :(得分:5)

确保Blogs架构具有

author:{
  type:Schema.Types.ObjectId,   
  ref: 'Users'
}

并填充如下

Blogs.findAll({})
.populate({
  path:author
})
.exec((err, blogs)=>{
  console.log(err,blogs);
}))

更多信息检查官方文档