簡體   English   中英

Mongodb聚合查詢按日期差異

[英]Mongodb aggregation query by date difference

我正在嘗試做一個同步我的文檔的 cron 作業。 它應該嘗試執行 x 次,但僅在上次嘗試后 2 小時之后。 在每個文檔上,我都有可以使用的“lastSyncAt”字段。

{
    "_id" : ObjectId("628d8c4ddb65027a2cfd1019"),
    "calculatedAt" : "",
    "count" : 0,
    "createdAt" : "2022-05-25 01:54:21",
    "lastSyncAt" : "2022-05-25 03:54:21"
} 

我應該如何處理這個?

我應該在管道中獲取 lastSyncAt 值並計算 currentDate 之間的差異嗎? 我如何才能在我的管道中只獲得其中的小時部分?

我是否應該將 lastSyncAt 轉換為 unix 並在 unix 中獲取 currentDate 減去它們並除以 7200 以查看它是否大於 2?

還是我應該采取另一種方法?

我什至不確定要采取什么方法。 不是在尋找代碼,而是在尋找如何處理的想法。

謝謝

更新:感謝@derek-menénedez,我設法讓它工作,如下所示:

[
            // Stage 1
            {
                $addFields: {
                    lastSyncAt: {
                        $dateDiff: {
                            startDate: {$dateFromString: {
                                    dateString: "$lastSyncAt",
                                    timezone: "Europe/Zagreb"
                                }},
                            endDate: "$$NOW",
                            unit: "minute",
                            timezone: "Europe/Zagreb"
                        }
                    }
                }
            },

            // Stage 2
            {
                $match: {
                    lastSyncAt: {
                        $gt: 120
                    }

                }
            }
        ]

您可以使用聚合框架來實現您想要的東西:

https://mongoplayground.net/p/1RzPCYbeHEP

您可以嘗試刪除示例中的投影以驗證小時數。

$dateFromString運算符可幫助您從字符串創建日期

$dateDiff運算符幫助您提取兩個日期的差異

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM