我已經創建了一個應用程序與2個模型,其中匹配指的是一個特定的聯賽。從這我不想做一個查詢來獲得所有即將到來的比賽的聯賽。我該怎麼做,或者我應該改變模型的結構?我試圖做一個查詢然而,這將返回所有即將開始的比賽,而不是聯賽與即將開始的比賽檢索基於數據的日期mongodb
模式
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var leagueSchema = new Schema({
_id: Number,
name: String,
league: Number
});
var matchSchema = new Schema({
_id: Number,
league: { type: Number, ref: 'league' },
date: Date,
homeName: String,
awayName: String
});
var League = mongoose.model('leagues', leagueSchema);
var Match = mongoose.model('matches', matchSchema);
保存數據
var queryData = {'_id': matchId, 'league': leagueId, 'date': date, 'homeName': homeTeam, 'awayName': awayTeam};
Match.findOneAndUpdate({'_id': matchId}, queryData, {upsert: true}, function(err, doc){
if(err){
console.log("Something wrong when updating data!");
}
});
查詢
var oneWeekAgo = new Date();
oneWeekAgo.setDate(oneWeekAgo.getDate() - 7);
Match
.find({ "date": { "$gte": oneWeekAgo } })
.populate('league')
.exec(function (err, matches) {
if (err) return handleError(err);
console.log(matches);
});
好吧,但我會如何將比賽添加到特定的聯賽? –
@PeterPik我在問題的中間添加了一個示例。 –
一些相同的比賽可能會被推到同一聯賽,在這種情況下,我會在哪裏放置'upsert:true'? –