我不知道何时在架构中使用ref
,但最近我开始使用它,因为它看起来很干净。以下是一个工作示例。
const UserSchema = new Schema({
credit: {
type: Schema.Types.ObjectId,
ref: 'Credit'
}
})
我会像这样使用填充
const response = await User.find({}).populate('Credit').exec()
但在我的其他情况下,我必须像其他控制器一样使用$lookup
以前的开发者已使用聚合。
const response = await Job.aggregate([
{
$match: queryObj
},
{
$lookup: lookupObj
},
{
$lookup: {
from: 'credit',
localField: ??
foreignField: ??
as: 'credit'
}
}
])
正如你可以看到上面的代码,我不得不放弃这个额外的$ lookup
{
$lookup: {
from: 'credits',
localField: ??, //no idea what this should be.
foreignField: '_id'
as: 'credits'
}
}
但它仍然无效。我有一个信用财产作为一个空数组。