MongoDB $查找Objectid获取空数组?

时间:2017-08-03 10:05:34

标签: node.js mongodb mongoose

我是mongodb的新手,并且在跟随文件的mongoose中使用aggregate练习$lookup,我遇到了一个令人困惑的问题。

我有用户架构

const userSchema = new Schema({
  userName: {type: String, index:{unique: true}},
  password: String,
  avatar: String
})

评论架构

const commentSchema = new Schema({
  post: {type: Schema.Types.ObjectId, ref:'postModel'},
  author:{type: Schema.Types.ObjectId, ref:'userModel'},
  content: String,
  createTime: Date
})

和模型commentModel= mongoose.model('commentModel', commentSchema) userModel = mongoose.model('userModel', userSchema) 然后我做

commentModel.aggregate.([{$lookup: {
  from: 'userModel',
  localField: 'author',
  foreignField: '_id',
  as: 'common'
}])

但是我在查询中变得空洞。根据db中的数据,我不应该得到这个结果。搜索后我仍然无法找到错误。

最后但并非最不重要的是,我需要使用aggregate方法,因此我必须在参考文档中使用$lookup,这是否有意义?

1 个答案:

答案 0 :(得分:2)

$ lookup中的from字段是集合名称,而不是模型变量名称。所以如果你正在初始化这个模型

db.model('User', userSchema)

然后查询查询应该是

commentModel.aggregate([{$lookup: {
  from: 'users',
  localField: 'author',
  foreignField: '_id',
  as: 'common'
}])