【发布时间】:2021-07-09 15:48:20
【问题描述】:
我的汇总代码
const temp = await Employee.aggregate([
{
$unwind: { path: '$timeClocks', preserveNullAndEmptyArrays: true },
},
{
$match: {
_id: { $in: employees },
},
},
{
$group: {
_id: '$_id',
name: { $first: '$name' },
timeClock: {
$push: {
start_time: '$timeClocks.start_time',
end_time: '$timeClocks.end_time',
},
},
},
},
// {
// $match: {
// timeClock: {
// start_time: new Date('2021-05-10'),
// },
// },
// },
// {
// $match: {
// timeClock: {
// start_time: {
// $gte: 'moment.utc(date).toDate()',
// },
// },
// },
// },
{
$project: {
name: 1,
timeClock: 1,
},
},
]);
结果
"working": [
{
"_id": "60cd9a3cb4ddcc00285b0df9",
"name": "Dr. dd",
"timeClock": [
{
"start_time": "2021-05-04T02:19:00.000Z",
"end_time": "2021-05-04T14:42:00.000Z"
},
{
"start_time": "2021-05-02T08:12:00.000Z",
"end_time": "2021-05-02T22:24:00.000Z"
},
{
"start_time": "2021-05-10T20:14:00.000Z",
"end_time": "2021-05-10T22:17:00.000Z"
},
]
},
],
我现在的情况是,当我从集合中聚合时,我在 timeClock 字段中获得了多个值。但我想在timeClock 字段中有一个匹配日期。
例如,如果我想要一个日期(2021-05-10),那么
预期结果
"working": [
{
"_id": "60cd9a3cb4ddcc00285b0df9",
"name": "Dr. dd",
"timeClock": {
"start_time": "2021-05-10T02:19:00.000Z",
"end_time": "2021-05-1-T14:42:00.000Z"
},
},
],
我尝试添加$match 和$filter,但给了我一个空数组。
我是 MongoDB 新手,谁能告诉我聚合阶段缺少什么?
【问题讨论】:
标签: node.js mongodb aggregation-framework