在我的架构上执行$ 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"最终总是一个空数组。
答案 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'
}},