我有点想找出在数据库中填充虚拟架构的最佳方法。在这种情况下,我想检查多个字段,但我不知道执行此操作的任何方法或替代方法。
我曾经希望我可以在虚拟模式的'localField'和'foreignField'键中使用一些字符串数组,但事实并非如此。
用户保存了一个“系列” _id,虚拟模式“联盟”也获得了用户输入的所有联赛,而该渔获是一个联赛,属于不同的联赛。我只想检索用户输入的联赛以及与用户系列_id相匹配的联赛...
如您所见,当前,该虚拟模式仅返回用户输入的所有联赛,而与系列无关。 :(
有什么想法吗?我对如何实现这一目标感到非常困惑。
const schema: mongoose.Schema = new mongoose.Schema({
_id: {
type: mongoose.Schema.Types.ObjectId,
auto: true
},
username: {
type: String,
unique: true,
},
series: {
ref: 'Serie',
type: mongoose.Schema.Types.ObjectId,
autopopulate: {
maxDepth: 1,
select: ['title']
}
}
});
schema.virtual('leagues', {
ref: 'League',
localField: '_id',
foreignField: 'users',
autopopulate: {
maxDepth: 1,
select: ['title', 'engineSize', 'host', 'series']
}
});
联赛架构如下
const schema: mongoose.Schema = new mongoose.Schema({
_id: {
type: mongoose.Schema.Types.ObjectId,
auto: true
},
title: String,
series: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Serie',
},
users: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
}]
});
答案 0 :(得分:0)
这是我使用吸气剂检查猫鼬中多个字段的解决方案。
schema.virtual('motoduel').get(function () {
return motoduelModel.findOne({
event: this.series.upcomingEvent._id,
riderGroup: this.riderGroup._id
});
});