我是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
,这是否有意义?
答案 0 :(得分:2)
$ lookup中的from
字段是集合名称,而不是模型变量名称。所以如果你正在初始化这个模型
db.model('User', userSchema)
然后查询查询应该是
commentModel.aggregate([{$lookup: {
from: 'users',
localField: 'author',
foreignField: '_id',
as: 'common'
}])