首页 > 解决方案 > 日期之间的 MongoDB 聚合 $match

问题描述

我正在尝试聚合与查询匹配的文档。我正在使用 Mongoose 和 MongoDB。

    let today = new Date();
    let start = moment(today).startOf('year').toDate().toISOString();
    let end = moment(today).endOf('year').toDate().toISOString();
    let event_query = {"$gte" : start, "$lte" : end};

    console.log(event_query);
    /*
     *{ '$gte': '2019-01-01T08:00:00.000Z',
     *  '$lte': '2020-01-01T07:59:59.999Z' }
     */
    let promise = Model.aggregate([
        { $match: {"charged" : true, "createdAt": event_query}},
        { $group: { _id: "$customer",  total: { $sum: 1 } } }
     ]).exec();

我知道这应该匹配文档,因为当我在聚合之外使用此查询时,它会返回预期的文档。此外,如果我删除createdAt查询,这将返回预期的查询。

为什么我对createdAt时间戳的日期查询无法匹配聚合管道中的文档?

标签: mongodbmongoose

解决方案


推荐阅读