私はmeteorhacksを使用しています:流星の集計パッケージを、と私は間の日付範囲内のイベント見つけようとしている:Meteor MongoDB:収集範囲から計算された終了日と日付範囲を集計する方法は?
今- 、マイナス一日を。
- イベントの終了日と2週間。
問題は、終了日がイベント文書の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はこの文字列を問題なく処理します。 times.until
フィールドへのアクセスでは、私が行うことができます。
const end = moment(event.times.until).add(2, 'week').toDate();
は、これは私の範囲の正しい終了日を与えるんが、パイプラインを構築しながら、どのように私は、終了日を計算するためにtimes.until
フィールドをつかむことができますか?
集計を行う前に 'times.until'を有効な日付オブジェクトに更新できますか?パイプラインで 'times.until'に対応する新しい日付オブジェクトを構築することはほとんど不可能です。 – Khang
@Khangはい、mongoに保存する前にラップすることができました。モーメント(until).toDate()を使用しています。 – asking
これはあなたがすべきことです、 'until'フィールドのフォーマットもこれですhttps://en.wikipedia.org/wiki/ISO_8601 – Khang