Javascript mongodb聚合:如何向日期字段添加分钟数,然后进行比较
我想做一个复杂的查询 我正在构建一个电影院应用程序。 我想做一个新节目的确认检查。 它将检查演出时间是否在同一剧院上演的另一场演出的范围内。 为了知道范围的结束时间,我需要将电影的分钟数添加到电影开始时间 重要注意事项:新的显示时间尚未存储在数据库中。所以它在不同的时区(比如+2)。因此,当我们比较日期时,我们也应该考虑不同的时区。 我把新节目的时间改为utc,所以我想它解决了这个问题 下面是我尝试运行的代码。显然,这是行不通的。我不知道是否可以将电影持续时间添加到电影开始:Javascript mongodb聚合:如何向日期字段添加分钟数,然后进行比较,javascript,node.js,mongodb,aggregation-framework,Javascript,Node.js,Mongodb,Aggregation Framework,我想做一个复杂的查询 我正在构建一个电影院应用程序。 我想做一个新节目的确认检查。 它将检查演出时间是否在同一剧院上演的另一场演出的范围内。 为了知道范围的结束时间,我需要将电影的分钟数添加到电影开始时间 重要注意事项:新的显示时间尚未存储在数据库中。所以它在不同的时区(比如+2)。因此,当我们比较日期时,我们也应该考虑不同的时区。 我把新节目的时间改为utc,所以我想它解决了这个问题 下面是我尝试运行的代码。显然,这是行不通的。我不知道是否可以将电影持续时间添加到电影开始: router.po
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的图片:
这是由瞬间提供的
因此,假设您的startDateTime是一个时刻对象:
startDateTime.add(20,'分钟')强>
试试这个
{“$match”:{“$expr”:{$lte:[{$add:[“$dateTime”,{$multiply:[“$MovieDetails.durationInMin”,60000]}},新的日期(startDateTime)]}}
你能不能发布你的实际数据而不是屏幕快照?我知道问题出在哪里。你的答案很完美,但在我最初的查询中,我不得不在“lte”和“gte”之间切换