我有一份檔案描述了這樣的從業者
{
name: String;
schedules: {
weekend: [Number],
timings: [{
from: {hour: Number, minute: Number},
to: {hour: Number, minute: Number}
}]
}
}
我想要一種使用 mongoose/mongodb 檢查時間陣列中是否包含日期小時和分鐘的方法,但我無法弄清楚這一點,因為我找不到有關此問題的任何檔案/問題
編輯1:
我的輸入值為 javascript ISO 日期,預期結果為 true 或 false。
uj5u.com熱心網友回復:
詢問
- 而不是
ISODate("2017-01-01T02:46:12Z")把你的日期變數放在兩個地方 - 第一個讓創建一個用于比較的日期變數
- 從假開始減少
- 如果還沒有找到匹配項
- 檢查 from_date(先轉換) <= your_date <= to_date(convert_first)
- 否則如果已經找到匹配保持真實值
- 如果至少有一個匹配所有 reduce 將評估為 true
- 將該真/假值設定為新欄位
- 您可以根據需要對其進行過濾,以保留虛假或真實的檔案
測驗代碼在這里
aggregate(
[{"$set":
{"date-in-timings":
{"$let":
{"vars":
{"your_date":
{"$dateFromParts":
{"year": 2021,
"hour": {"$hour": ISODate("2017-01-01T02:46:12Z")},
"minute": {"$minute": ISODate("2017-01-01T02:46:12Z")}}}},
"in":
{"$reduce":
{"input": "$schedules.timings",
"initialValue": false,
"in":
{"$cond":
[{"$not": ["$$value"]},
{"$and":
[{"$gte":
["$$your_date",
{"$dateFromParts":
{"year": 2021,
"hour": "$$this.from.hour",
"minute": "$$this.from.minute"}}]},
{"$lte":
["$$your_date",
{"$dateFromParts":
{"year": 2021,
"hour": "$$this.to.hour",
"minute": "$$this.to.minute"}}]}]}, "$$value"]}}}}}}}])
uj5u.com熱心網友回復:
使用$dateToParts,它會給出如下結果:
"timeParts" : {
"isoWeekYear" : 2021.0,
"isoWeek" : 41.0,
"isoDayOfWeek" : 1.0,
"hour" : 19.0,
"minute" : 58.0,
"second" : 56.0,
"millisecond" : 685.0
}
然后,你可以比較的欄位isoDayOfWeek,hour并minute與你的價值觀。由于您沒有提供任何輸入值或預期結果,我很難提出具體的解決方案,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/321286.html
上一篇:Mongoose在結果的_id欄位中回傳“newObjectId”
下一篇:如何檢測按鈕是否被統一點擊?
