我正在尝试使用投影聚合查询以将字符串日期转换为ISODate格式字符串日期格式为'MMM-yyyy'(例如:2017年6月)。 但是在以mongo DB可接受的格式创建字符串日期为'yyyy-MM-ddTHH:mm:ss'并将其分配给前一阶段的属性并将其用于下一阶段以转换为ISODate时它不接受。 例如:new Date(“$ strDate”);
db.getCollection('MyCollection').aggregate([{
$match: {
"_id": "292"
}
}, {
$project: {
Month: {
$substr: ["$Month_Year", 0, 3]
},
Year: {
$substr: ["$Month_Year", 4, 9]
}
}
}, {
$project: {
Month: 1,
Year: 1,
MonthInt: {
$cond: {
if: {
$eq: ["$Month", "Jan"]
},
then: "01",
else: {
$cond: {
if: {
$eq: ["$Month", "Feb"]
},
then: "02",
else: {
$cond: {
if: {
$eq: ["$Month", "Mar"]
},
then: "03",
else: {
$cond: {
if: {
$eq: ["$Month", "Apr"]
},
then: "04",
else: {
$cond: {
if: {
$eq: ["$Month", "May"]
},
then: "05",
else: {
$cond: {
if: {
$eq: ["$Month", "Jun"]
},
then: "06",
else: {
$cond: {
if: {
$eq: ["$Month", "Jul"]
},
then: "07",
else: {
$cond: {
if: {
$eq: ["$Month", "Aug"]
},
then: "08",
else: {
$cond: {
if: {
$eq: ["$Month", "Sep"]
},
then: "09",
else: {
$cond: {
if: {
$eq: ["$Month",
"Oct"
]
},
then: "10",
else: {
$cond: {
if: {
$eq: ["$Month", "Nov"]
},
then: "11",
else: {
$cond: {
if: {
$eq: ["$Month", "Dec"]
},
then: "12",
else: "00"
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}, {
$project: {
strDate: {
$concat: ["$Year", "-", "$MonthInt", "-01T00:00:00Z"]
}
}
}, {
$project: {,
strDate: 1,
MyDate: {
"$add": [new Date("$strDate"), ]
} // new Date("2017-05-01T00:00:00Z") } } ]);