我要进行复杂的查询。
我正在构建一个电影应用程序。 我想对一个新节目进行验证检查。 它将检查放映时间是否在同一剧院内播放的其他放映时间范围内。 为了知道该范围的结束时间,我需要将电影的分钟数添加到电影的开始时间。
重要注意事项:新的表演时间尚未存储在数据库中。因此它处于不同的时区(比方说+2)。因此,当我们比较日期时,我们也应同时适用不同的时区。 我将新节目的时间更改为utc,所以我想它可以解决问题。
这是我尝试运行的代码。显然是行不通的。我不知道可以将电影的“持续时间”添加到电影的开头:
router.post("/", (req, res) => {
if (!req.body)
return res.sendStatus(400);
let show = new Show(req.body);
startDateTime= moment.utc(show.dateTime);
console.log('startDateTime in utc');
console.log(startDateTime);
Show.aggregate([
//next stage: add movies details
{
"$match": {
"dateTime": { $gte: new Date(startDateTime)},
"_TheaterId": show._TheaterId
}
},
{
$lookup:
{
from: 'movies',
localField: '_MovieId',
foreignField: '_id',
as: 'MovieDetails'
}
},
{
$unwind: "$MovieDetails"
},
{
"$match": {
{ $add: [ "$dateTime", $MovieDetails.durationInMin * 60000 ] }: { $lte: new Date(startDateTime)}
}
}
], function (err, result) {
if (err) {
//next(err);
return res.json(err);
} else {
res.json(result);
}
});
任何人都知道如何将分钟添加到日期字段,然后将其与其他日期进行比较?
非常感谢!
这是Db的图片:
答案 0 :(得分:0)