[英]Mongoose relationship multiple to one
我有一个问题,更确切地说,我对mon昧和关系一无所知。
我有一个“运动员”收藏:
var athletesSchema = mongoose.Schema({
name : String,
regionName : String,
age : Number,
overallScore : Number,
scores : {
ordinnal : String,
ordinnal2 : String,
ordinnal3: String,
ordinnal4: String,
ordinnal5:String
}
})
我还有另一个收藏集“ Regions”
var regionsSchema = mongoose.Schema({
name: String,
athletes: [{ type: Schema.Types.ObjectId, ref: 'Athletes' }]
})
一个运动员有一个区域,但是一个区域有多个运动员。 我不知道这怎么可能,当我创建运动员时,模型区域会知道它是在该区域还是该区域。
我有这个到我的server.js:
Athletes.find({name : datas.name}, function(err, name){
if(name == ""){
Athletes.create(datas, function(err, ath){
if(err || ath.name){
console.log(err)
}
Regions.create(regionName, function(err){
if(err){
console.log(err)
}
})
})
}
})
我在创建新用户之前检查是否不在数据库中,是否不是在创建运动员,但我不知道如何在Region模型中设置他的区域。
也许您更容易扭转这种情况。 具有仅具有名称的区域。 然后在运动员模型上添加regionId:
region: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Regions',
index: true,
}
然后,无论何时更新运动员,您都只在更新运动员,对象。 另外,处理数组也不是那么简单。
您可以使用此查询(并填充),例如来自给定区域的所有运动员:
Athletes.find({ region: [region1, region2]})
.populate('region')
现在,简化了区域名称的更新,您可以在一个地方而不是在所有运动员实例上进行。
在更复杂的场景中,您希望通过各种条件查询事物,但是在大多数情况下,这是最简单的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.