Pal*_*lab 5 javascript mongodb node.js aggregation-framework reactjs
我正在尝试提交出勤申请。我使用 Mongodb 和 koajs 进行开发。有夜班选项,当出勤日期发生变化时我无法处理。当当前日期的轮班是晚上时,我需要将下一个日期的第一条记录移动到当前日期的记录。我当前的数据集如下所示。 Mongodb 游乐场
[
{
"date": "2023-04-01",
"shift": {
"_id": "6422d103994726677e9105c3",
"date": "2023-04-01",
"shiftType": {
"_id": "6299fd7504978a2ba513e0a2",
"name": "Next Day End",
"isNight": true
}
},
"attendances": [
{
"_id": "6422d1b9994726677e9105c6",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-01T05:30:00.000Z"
}
]
},
{
"date": "2023-04-02",
"shift": null, //Shift not yet set, treated as general shift.
"attendances": [
{
"_id": "6422d1b9994726677e9105c7",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-02T00:30:00.000Z"
},
{
"_id": "6423286e2746f65c2480a13e",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-02T04:30:00.000Z"
},
{
"_id": "6423286e2746f65c2480a13f",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-02T12:40:00.000Z"
}
]
},
{
"date": "2023-04-03",
"shiftType": {
"_id": "6299fd7504978a2ba513e0a2",
"name": "General",
"isNight": false
},
"attendances": [
{
"_id": "642328a42746f65c2480a140",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-03T04:05:00.000Z"
},
{
"_id": "642328a42746f65c2480a141",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-03T13:45:00.000Z"
}
]
},
{
"date": "2023-04-04",
"shift": {
"_id": "6422d10a994726677e9105c5",
"date": "2023-04-04",
"shiftType": {
"_id": "6299fd7504978a2ba513e0a2",
"name": "Next Day End",
"isNight": true
}
},
"attendances": [
{
"_id": "6423292f2746f65c2480a142",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-04T12:30:00.000Z"
}
]
},
{
"date": "2023-04-05",
"shift": null,
"attendances": [
{
"_id": "6423292f2746f65c2480a143",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-04T21:55:00.000Z"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
有轮班,我已经查找了出勤日期和员工(我没有在 JSON 中提到)。在我的轮班系统中,夜班规定为shiftType,在这里我将夜班记录为"isNight": true。因此,我需要将出勤率与第二天的出勤率与 isNight 为真的情况进行对比。我需要的输出如下所示。
[
{
"date": "2023-04-01",
"shift": {
"_id": "6422d103994726677e9105c3",
"date": "2023-04-01",
"shiftType": {
"_id": "6299fd7504978a2ba513e0a2",
"name": "Next Day End",
"isNight": true
}
},
"attendances": [
{
"_id": "6422d1b9994726677e9105c6",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-01T05:30:00.000Z"
},
{
"_id": "6422d1b9994726677e9105c7",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-02T00:30:00.000Z"
}
]
},
{
"date": "2023-04-02",
"shift": null,
"attendances": [
{
"_id": "6423286e2746f65c2480a13e",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-02T04:30:00.000Z"
},
{
"_id": "6423286e2746f65c2480a13f",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-02T12:40:00.000Z"
}
]
},
{
"date": "2023-04-03",
"shiftType": {
"_id": "6299fd7504978a2ba513e0a2",
"name": "General",
"isNight": false
},
"attendances": [
{
"_id": "642328a42746f65c2480a140",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-03T04:05:00.000Z"
},
{
"_id": "642328a42746f65c2480a141",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-03T13:45:00.000Z"
}
]
},
{
"date": "2023-04-04",
"shift": {
"_id": "6422d10a994726677e9105c5",
"date": "2023-04-04",
"shiftType": {
"_id": "6299fd7504978a2ba513e0a2",
"name": "Next Day End",
"isNight": true
}
},
"attendances": [
{
"_id": "6423292f2746f65c2480a142",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-04T12:30:00.000Z"
},
{
"_id": "6423292f2746f65c2480a143",
"employee": "622061b73b2eaac4b15d42e4",
"dateTime": "2023-04-04T21:55:00.000Z"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
请帮帮我。提前致谢。
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |