【发布时间】:2019-04-30 22:06:16
【问题描述】:
我正在按员工姓名将两个表连接在一起。我有那部分工作。我目前遇到的问题是我需要将日期和时间设为 ISO 格式,并且我需要在我的聚合中这样做。我不知道怎么做。
我需要转换:
2018-11-03:10:47:31
收件人:
2018-11-03T10:47:31.000Z
员工收藏
{
"_id" : ObjectId("(Object ID here"),
"name": "Test"
}
时钟收集
{
"_id" : ObjectId("(Object ID here"),
"employeeName": "Test",
"time": "2014-11-21:17:15:00"
}
这是我的加入
dbo.collection("employee").aggregate([
{ "$lookup": {
"localField": "name",
"from": "clock",
"foreignField": "clock.employeeName",
"as": "employeeInfo"
}
}]).toArray(function(err, results) {
console.log(results);
});
【问题讨论】:
-
你的 mongoDB 版本是多少?
-
我使用的是 mongo 3.6
-
问题是您的日期格式很奇怪,您可以使用
$dateFromString执行此操作,但其format选项仅在mongoDB 4.0 及更高版本中可用。 -
好的,然后简单地研究一下像
$unwind这样的事情,然后在$addFields里面你会做像"employeeInfo.date": { $dateFromString: { dateString: "$employeeInfo.time", format: "%Y-%m-%d:%H:%M:%S" } }这样的事情。我现在手头没有 4.0 来给你完整的查询。 -
这个想法是使用
$dateFromString的format选项,因为您的日期格式完全搞砸了,mongoDB 默认情况下无法识别它,也无法将其传递给new Date()
标签: arrays mongodb mongoose mongodb-query aggregation-framework