我正在尝试使用外键填充子文档[" ENROLLMENTS"]但是当有多个匹配时,它会返回一个数组内的注册数组。当只有一个匹配时,它返回一个带有一个对象的数组。不确定为什么会发生这种情况或修复。
预期: 报名[{...},{...},{...}]
实际: 报名[[{...},{...},{...}]]
下面我有一个具有虚拟注册的客户端的架构。这些是由分配者和价值的组合键相关联的。目前,我正在尝试使用该值来填充文档。
我也对其他解决方案持开放态度。
这是客户端架构
from pip._internal import main
main(...)
这是我的虚拟,注册尝试匹配值字段。
const clientSchema = new Schema({
identifiers: [
{
value: { type: String, required: true },
use: { type: String },
assigner: { type: String, required: true },
_id: false
}
],
...
},
{
timestamps: { createdAt: 'createdAt', updatedAt: 'updatedAt' },
toJSON: { virtuals: true }
}
);
这是注册架构
clientSchema.virtual('enrollments', {
ref: 'Enrollment',
localField: 'identifiers.value',
foreignField: 'subject.value',
justOne: false
});
这是我的填充方法
const enrollmentSchema = new Schema(
{
organization: { type: String, ref: 'Organization' },
identifiers: [
{
value: { type: String, required: true },
assigner: { type: String, required: true },
_id: false
}
],
subject: {
value: { type: String, required: true },
assigner: { type: String, required: true },
_id: false
},
enrollmentDate: { type: Date, required: true },
...
},
{
timestamps: { createdAt: 'createdAt', updatedAt: 'updatedAt' },
toJSON: { virtuals: true }
});
这是我回来的原因
return await Client.find(query)
.populate({
path: 'enrollments',
model: 'Enrollment',
populate: {
path: 'progressNotes',
model: 'ProgressNote',
options: {
limit: 30,
sort: { 'performed.period.start': -1 }
}
},
})
.select(Projections.CLIENT_FULL_WITH_ENROLLMENTS())
.exec();