是否可以忽略日期并仅检查此猫鼬聚合中的时间?
is it possible to ignore date and check only time in this mongoose aggregate?
我正在尝试搜索两个时间范围之间的时间,忽略日期(年、日、月),仅时间无关紧要
我自己能够达到这一点,但无法找到任何解决方案来仅考虑时间,除非我更改架构
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",
],
},
},
},
},
},
},
},
]);
查询
- 使用
$hour,$minute,$seconds
忽略year/month/day
- 比较
[hours1,minutes1,milliseconds1] > [hours2,minutes2,milliseconds2]
它将比较两个日期的成员从左到右
*我认为这是一种仅比较 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"}]]}}}])
我正在尝试搜索两个时间范围之间的时间,忽略日期(年、日、月),仅时间无关紧要
我自己能够达到这一点,但无法找到任何解决方案来仅考虑时间,除非我更改架构
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",
],
},
},
},
},
},
},
},
]);
查询
- 使用
$hour,$minute,$seconds
忽略year/month/day
- 比较
[hours1,minutes1,milliseconds1] > [hours2,minutes2,milliseconds2]
它将比较两个日期的成员从左到右
*我认为这是一种仅比较 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"}]]}}}])