node.js - MongoDB $lookup Objectid 得到空数组?

标签 node.js mongodb mongoose

我是 mongodb 新手,在 mongoose 以下文档中使用 $lookup 练习 aggregate ,我遇到了一个非常令人困惑的问题。

我有用户架构

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'
}])

但是我在查询中得到了空的common。根据db中的数据,我不应该得到这个结果。经过搜索我仍然找不到错误所在。

最后但并非最不重要的一点是,我需要使用aggregate方法,所以我必须在引用文档上使用$lookup,这有意义吗?

最佳答案

$lookup 中的 from 字段是集合名称,而不是模型变量名称。因此,如果您像这样初始化模型

db.model('User', userSchema)

那么查找查询应该是

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

关于node.js - MongoDB $lookup Objectid 得到空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45481049/

相关文章:

javascript - Node.js:通过迭代的 JSON POST 数据创建多个 MongoDB 文档

json - 执行正确的 MongoDB 查询(类型错误 : Converting circular structure to JSON)

node.js - MongoDB 减慢插入包含嵌套数组的数据的速度

node.js - MongoDB 保存用户时电子邮件和密码无效

javascript - 错误: 3 INVALID_ARGUMENT: Name 'Hello' does not match patterns DialogFlow

node.js - 文件执行权限在 Linux 中不断变回

node.js - mongoose 使用一个搜索参数查找包含组合字段的文档

javascript - 用时刻解析 GMT 日期字符串

javascript - Mongoose 只按时间排序日期

node.js - 批量更新 - BulkWriteResult.nMatched 和 BulkWriteResult.nModified 返回 0