猫鼬获取日期和周数具有当前日期的所有文档

Mongoose get all documents where date and number of weeks have current date

我在 mongoDB 中有此类文档。

{
     _id:620df4541571891a71dfa372
     user_id:61cc109f967b757d484fbf3b
     instrument_type:"binance"
     sub_instrument:"BTC/USDT"
     start_date:2022-02-17T00:00:00.000+00:00
     type_quantity:2
     prediction:"High"
     points:12
     price:null
     run_at:null
     createdAt:2022-02-17T07:08:04.633+00:00
     updatedAt:2022-02-17T07:08:04.633+00:00
}

这里是开始日“start_date”。 “type_quantity”这是从开始日算起的周数。

示例: 如果“start_date”为 2022-02-17T00:00:00.000+00:00,“type_quantity”为 2。然后,每周的日期将变为 2022-02-17、2022-02-24 和 2022-03-03。如果当前日期是这些日期之一,则获取此文档。

您可以像这样在聚合查询中使用 $dateAdd

注意这里只需要一个 $match 阶段 $expr 来获取文档,其中:

  • 当前日期 ($$NOW) 大于或等于 $start_date
  • 当前日期 ($$NOW) 小于或等于计算日期加上 X 周。

即找到的日期介于 $start_date 和 start_date + X 周之间。

db.collection.aggregate([
  {
    "$match": {
      "$expr": {
        "$and": [
          {
            "$gte": [
              "$$NOW",
              "$start_date"
            ]
          },
          {
            "$lte": [
              "$$NOW",
              {
                "$dateAdd": {
                  "startDate": "$start_date",
                  "unit": "week",
                  "amount": "$type_quantity"
                }
              }
            ]
          }
        ]
      }
    }
  }
])

示例 here 添加更多文档。