我正在嘗試搜索兩個時間范圍之間的時間,而不考慮日期(年、日、月),僅時間無關
我自己能夠達到這一點,但除非我改變我的模式,否則我無法找到任何只考慮時間的解決方案
StoreModel.aggregate([
{ $unwind: { path: "$practitioners" } },
{
$match: {
_id: new Types.ObjectId(storeId),
"practitioners._id": new Types.ObjectId(practitionerId),
},
},
{
$project: {
_id: false,
timings: "$practitioners.schedule.timings",
},
},
{
$set: {
dateInTimings: {
$let: {
vars: {
my_date: date,
},
in: {
$reduce: {
input: "$timings",
initialValue: false,
in: {
$cond: [
{ $not: ["$$value"] },
{
$and: [
{
$gte: ["$$my_date", "$$this.from"],
},
{
$lte: ["$$my_date", "$$this.to"],
},
],
},
"$$value",
],
},
},
},
},
},
},
},
]);
uj5u.com熱心網友回復:
詢問
- 使用
$hour,$minute,$seconds忽略year/month/day - 比較
[hours1,minutes1,milliseconds1] > [hours2,minutes2,milliseconds2]它將從左到右比較 2 個日期的成員
*我認為這是一種僅比較 2 個日期的時間的方法,但可能存在更快或更簡單的方法
玩蒙哥
aggregate(
[{"$set":{"date1":ISODate("2022-05-17T22:50:44.501Z")}},
{"$set":{"date2":ISODate("2022-05-17T22:49:44.501Z")}},
{"$set":
{"date1Bigger":
{"$gt":
[[{"$hour":"$date1"}, {"$minute":"$date1"},
{"$millisecond":"$date1"}],
[{"$hour":"$date2"}, {"$minute":"$date2"},
{"$millisecond":"$date2"}]]}}}])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477352.html
