【发布时间】:2019-01-14 13:33:38
【问题描述】:
我有这种形式的 MongoDB 文档,其中“vaccinations”是一个 ISODates 数组:
{
"vacNo" : 1,
"claimantDetails" : {
"forename" : "Fry",
"surname" : "Gordon",
"dateOfBirth" : ISODate("2000-12-31T00:00:00Z")
},
"vaccinations" : [
{
"dateOfVaccination" : ISODate("2010-12-31T00:00:00Z"),
"Type" : "MMR"
},
{
"dateOfVaccination" : ISODate("2015-01-31T00:00:00Z"),
"Type" : "Flu"
}
]
}
我需要将所有 ISODates 转换为字符串,包括“vaccinations”数组中的那些(保持其他字段不变),如下所示:
{
"vacNo" : 1,
"claimantDetails" : {
"forename" : "Fry",
"surname" : "Gordon",
"dateOfBirth" : "2000-12-31"
},
"vaccinations" : [
{
"dateOfVaccination" : "2010-12-31",
"Type" : "MMR"
},
{
"dateOfVaccination" : "2015-01-31",
"Type" : "Flu"
}
]
}
我可以使用 $dateToString 但只能在不属于数组的字段上使用,例如:
db.claimTest.aggregate([{$project:{ _id:0,
"vacNo":1,
"claimantDetails.forename":1,
"claimantDetails.surname":1,
"claimantDetails.dateOfBirth":{ $dateToString:{format:"%Y-%m-%d", date:"$claimantDetails.dateOfBirth"}}}}]);
它将“claimantDetails.dateOfBirth”转换为字符串,但我无法转换任何“dateOfVaccination”字段,因为它们是“vaccinations”BSON 数组的一部分。
有没有人有任何建议/解决方案可以帮助将 ISODate 文档转换为所需的文档?
谢谢
【问题讨论】:
标签: mongodb aggregation-framework bson isodate