У меня есть документы MongoDB этой формы, где "прививки" - это массив ISODate:
{
"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"
}
]
}
Мне нужно преобразовать все ISODate в строку, в том числе в массиве «Прививки» (оставив остальные поля как есть), как показано ниже:
{
"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", поскольку они являются частью массива BSNA "вакцинации".
У кого-нибудь есть какие-либо предложения / решения, которые могут помочь преобразовать документ ISODate в необходимый документ?
Спасибо