我正在为 Meteor 使用 meteorhacks:aggregate 包,并且我试图在以下日期范围内查找事件:
- 现在,减去一天。
- 事件的结束日期,再加上两周。
问题是,结束日期存储在事件文档中的字段中times.until
。事件文档如下所示:
// Event collection doc:
{
_id: 'abc',
times: {
start: {
dateTime: "ISODate("2017-03-07T00:00:00Z"),
timeZone : "America/Chicago"
},
until: "20170307T000000Z"
}
}
我能够聚合以查找某个范围内的日期,但我不知道如何根据事件的times.until
字段计算该范围的结束日期。
if (Meteor.isServer) {
Meteor.methods({
'events.inProgress'() {
const start = moment().utc().subtract(1, 'day').toDate();
return Events.aggregate([
{$match: {"times.start.dateTime": {$gt: start, $lt: end**(MUST COMPUTE end FROM DOC'S times.until PLUS 2 WEEKS)**}}},
]);
}
}
}
另外,请注意该times.until
字段的格式是20170307T000000Z
(不确定此格式的正确名称)。这不是 JavaScript 的有效格式Date
,但 moment.js 处理这个 String 没有问题。通过访问该times.until
字段,我可以执行以下操作:
const end = moment(event.times.until).add(2, 'week').toDate();
这确实为我提供了范围的正确结束日期,但是如何times.until
在构建管道时获取该字段来计算结束日期?