我面临着Mongoose聚合查询的问题.我有以下架构,它是一个对象数组,包含endDate
值.
[
{
"id": 1,
"endDate": "2022-02-28T19:00:00.000Z"
},
{
"id": 2,
"endDate": "2022-02-24T19:00:00.000Z"
},
{
"id": 3,
"endDate": "2022-02-25T19:00:00.000Z"
}
]
因此,在聚合结果期间,我必须添加一个新的字段名isPast
,它包含布尔值,并执行计算以判断endDate
是否通过.如果已经通过,则isPast
将是true
,否则为false
.
我使用的是Moment库中的isBefore
函数,它返回布尔值.但是在这个函数内部面临着一个关于传递endDate
值的问题.$endDate
是作为字符串传递的,而不是作为值传递的.
有没有办法在函数内部传递endDate的值?
const todayDate = moment(new Date()).format("YYYY-MM-DD");
db.collection.aggregate([
{
$addFields: {
"isPast": moment('$endDate', 'YYYY-MM-DD').isBefore(todayDate)
},
},
])