2015-02-06 91 views
1

所以我想弄清楚Mongo/Mongoose中的人口和关系。我有一个将会有很多预测的夹具。如果我想显示预测的夹具,我可以简单地使用填充方法,但是如果我需要显示夹具的所有预测,该怎么办?MongoDB/Mongoose有很多关系

这听起来很简单,但也许我仍然有我的SQL头试图弄清楚。这很容易做还是以错误的方式接近它?这里是我的模型 -

var FixtureSchema = new Schema({ 
homeTeam: { 
    type: Number, 
    required: true, 
    ref: 'Team' 
}, 
awayTeam: { 
    type: Number, 
    required: true, 
    ref: 'Team' 
}, 
date: { 
    type: Date 
}, 
matchday: { 
     type: Number, 
     required: true 
} 
}); 

var PredictionSchema = new Schema({ 
goalsHomeTeam: { 
    type: Number, 
    required: true 
}, 
goalsAwayTeam: { 
    type: Number, 
    required: true 
}, 
fixture: { 
    type: Number, 
    ref: 'Fixture' 
}, 
user: { 
    type: Schema.ObjectId, 
    ref: 'User' 
} 
}); 

回答

1

你必须先找到你想要的夹具,然后通过你的预测搜索和查找匹配。 Mongo没有“反向”人口,但编写你自己的很容易:

Prediction.find({fixture: fixture._id}, function(err, predictions) { 
    //do things with predictions 
}) 
+0

谢谢格兰特。我的问题是如果我想要检索一系列灯具并填充所有这些灯具的预测结果?那可能吗? – 2015-02-07 16:11:15

+0

实际上并没有一种简单快捷的方法。你不能“填充”,因为夹具不存储所有预测的参考。您可以填充_id的数组,但是这会要求您在每次创建新预测时更新夹具对象。 另一个可能的解决方案是[异步库](https://github.com/caolan/async)。具体来说就是“每个”功能。循环固定装置,并为每一个找到所有的预测并返回数组。 – 2015-02-08 22:19:30

+0

好极了。我相信这将解决我的问题。感谢您的帮助Grant。 – 2015-02-09 10:56:38