Mongo $ lookup返回空数组

时间:2018-03-18 13:00:13

标签: javascript mongodb mongoose aggregate

在我的架构上执行$ lookup时,它总是返回一个空数组。我究竟做错了什么?

结果收集

const resultSchema = new mongoose.Schema({
  trial: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Trial',
    required: true
  }
});

试用收集

const trialSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  }
});

汇总

Result.aggregate([
    {
      $lookup: {
        from: 'trial',
        localField: 'trial',
        foreignField: '_id',
        as: 'x'
      }
    }
  ])
    .exec()
    .then(results => ({ results }))

" X"最终总是一个空数组。

3 个答案:

答案 0 :(得分:3)

好的,就在这里找到答案:https://stackoverflow.com/a/45481516/3415561

"来自"查找中的字段必须是您的集合名称,而不是模型名称。因此它是一个复数词。 这是

from: 'trials'

而不是

from: 'trial'

答案 1 :(得分:0)

检查集合名称。在聚合函数中,'trial'以小写开头,在结果集合'Trial'中开始大写

答案 2 :(得分:0)

在我的情况下,我错误地将$放在集合名称的前面:

{$lookup: {
  from: '$users', // <- incorrect
  foreignField: '_id',
  localField: 'userid',
  as: 'users'
}},

它必须是

{$lookup: {
  from: 'users', // <- correct
  foreignField: '_id',
  localField: 'userid',
  as: 'users'
}},