Mongoose / MongoDB按多个日期范围聚合过滤器

时间:2018-11-27 17:08:56

标签: mongodb mongoose mongodb-query aggregation-framework

我有一个包含365个文档的集合。每个文档如下:

{
  date: "2018-11-27T00:00:00.000Z",
  title: "Went to school"
},
{
  date: "2018-11-28T00:00:00.000Z",
  title: "Bought a car"
}

我想按多个数据范围过滤文档。 示例:

  1. 仅显示在2018-01-04之后和2018-11-24之前创建的文档
  2. 结果中不应包含间隔2018-05-06-2018-06-07等中创建的文档

到目前为止,我知道了:

const dates = await Calendar.aggregate(
  [{
      $match: {
        $and: [{
            date: {
              $not: {
                $lte: new Date(2018, 0, 7),
              }

            }
          },
          {
            date: {
              $not: {
                $gte: new Date(2018, 10, 15)
              }
            }
          },
          {
            date: {
              $not: {
                $gt: new Date(2018, 6, 31),
                $lt: new Date(2018, 7, 15)
              }
            }
          }
        ]
      }
    },
    {
      $project: {
        title: 1,
        date: 1
      }
    }
  ]
).sort('date')

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您需要对查询中的单个length(body('Get_record')?['documentbody']) 对象使用$lte$gte

date