【问题标题】:Mongoose get all documents where date and number of weeks have current dateMongoose 获取日期和周数为当前日期的所有文档
【发布时间】:2022-02-17 17:35:33
【问题描述】:

我在 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 年 2 月 24 日和 2022 年 3 月 3 日。如果当前日期是这些日期之一,则获取此文档。

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query date-range


    【解决方案1】:

    您可以在这样的聚合查询中使用$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 添加更多文档。

    【讨论】:

    • 抱歉,我想我无法正确解释我的问题。我已经改变了。请检查!
    • 最后谢谢你的回答,我解决了我的问题。它真的帮助了我!请投票以获得更好的影响力。
    猜你喜欢
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 2020-05-29
    • 2017-01-08
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    相关资源
    最近更新 更多