【问题标题】:Mongoose Populate Method Not by _IdMongoose 填充方法不是由 _Id
【发布时间】:2016-03-15 13:28:02
【问题描述】:

Mongoose Populate 效果很好。但是有人可以使用 populate 通过另一个不是 _Id 的属性来拉入文档吗?

例如评论模式:

var CommentSchema = new Schema({
  _id:Auto Generated
  postId:1,
  userId:411,
  comment:'This is a comment',
  // Would want to fetch Like via the userId not likes _id
  likes: {
    type:mongoose.Schema.Types.ObjectId, // This will have to change?
    ref:'Like'
  }
})

和类似的架构:

var LikeSchema = new Schema({
    _Id:Auto Generated,
    blogId:1,
    userId:411,
    postId:1,   
    commentId:1     
});
评论架构中的

'likes' 被设置为 userId,在这种情况下为 '411'。所以我假设目前从上面的架构中,填充将尝试将 CommentSchema 中的 likes 作为 userId 与 LikeSchema 的 _Id 进行匹配。我可以通过 userId 加入两者吗?

欢迎任何人提出任何想法,只是想扩大我对猫鼬中填充功能的了解:)

【问题讨论】:

  • 简短回答是否定的。可能被stackoverflow.com/questions/19287142/… 欺骗;查看未接受的答案。
  • 在发布之前检查了该问题/答案。考虑到从 2013 年开始,事情可能会有所进展或改变。

标签: mongodb mongoose mongoose-populate


【解决方案1】:

从(实际上是最新的)mongodb 3.2 版本开始,使用聚合时可以使用 $lookup 管道方法进行左外连接。

link to documentation

【讨论】:

  • 不知道MongoLab是否支持3.2?感谢您的消息利比克。
猜你喜欢
  • 1970-01-01
  • 2021-10-04
  • 2023-04-08
  • 2016-07-11
  • 2013-06-30
  • 2013-11-14
  • 2019-01-31
  • 2015-01-22
  • 2020-07-20
相关资源
最近更新 更多