【发布时间】:2022-01-22 21:46:33
【问题描述】:
我想获取一系列员工工作纪念日的列表。
加入日期在员工记录中可用。
在此查询中,首先计算今年的 aniversaryDate,然后尝试找出今天日期和周年日期之间的差异。但是$subtract 对所有记录集都返回 false。
db.employees.aggregate([{
"$match": { "deleted": false }
},
{
"$project": {
"id": 1, "firstName": 1, "lastName": 1, "empId": 1, "joiningDate": 1,
"aniversaryDate":
{
"$dateFromParts":
{
"year": { "$year": "$$NOW" },
"day": { "$dayOfMonth": "$joiningDate" },
"month": { "$month": "$joiningDate" }
}
},
"dateDifference":
{ "$subtract": ["$aniversaryDate", "$$NOW"] }
}
}, { "$sort": { "dateDifference": 1 } }]);
结果给出了这样的对象数组:
{
"_id" : ObjectId("61a4bf6b5362437b668db2b5"),
"empId" : "1",
"firstName" : "Olive",
"lastName" : "Gunter",
"joiningDate" : ISODate("2021-10-03T16:16:58.997+05:30"),
"aniversaryDate" : ISODate("2021-10-03T05:30:00.000+05:30"),
"dayssince" : null,
"dateDifference" : null
}
【问题讨论】:
标签: mongodb aggregation-framework nosql-aggregation