提问人:AlwaysJunior 提问时间:2/22/2022 最后编辑:AlwaysJunior 更新时间:2/22/2022 访问量:57
如何在MongoDB中更改此数据结构的日期格式?
How to change date format of this data structure in MongoDB?
问:
我有一些用户,结构是这样的:
{
"_id": {"$oid":"6213baaba013b7c5f1232e25"},
"birthDate": 239290215000,
"surname": "Yang",
"name": "Ruby",
"joinDate": 1534861815000,
"children": [
{
"birthDate": 876749415000,
"surname":"Yang",
"name":"Bob"
},
{
"birthDate":926753415000,
"surname":"Yang",
"name":"Mel",
"joinDate":1579005015000
}
],
}
我将计算用户的年龄,然后他们多久前加入?所以我尝试更改日期格式,但我只能更改父母出生日期的格式。我无法更改孩子出生日期的格式。如何更改所有日期并计算其年龄? 我的预期输出:
{
"_id": {"$oid":"6213baaba013b7c5f1232e25"},
"birthDate": ISODate(...),
"surname": "Yang",
"name": "Ruby",
"joinDate": ISODate(...),
"children": [
{
"birthDate": ISODate(...),
"surname":"Yang",
"name":"Bob"
},
{
"birthDate": ISODate(...),
"surname":"Yang",
"name":"Mel",
"joinDate": ISODate(...)
}
],
}
答:
1赞
J.F.
2/22/2022
#1
如果我理解正确,你可以试试这个:
这里的诀窍是使用$toDate。
因此,要输出值而不是时间戳,您可以使用此聚合查询来更新每个对象:ISODate
$map
children
db.collection.aggregate([
{
"$set": {
"birthDate": {
"$toDate": "$birthDate"
},
"joinDate": {
"$toDate": "$birthDate"
},
"children": {
"$map": {
"input": "$children",
"in": {
"surname": "$$this.surname",
"name": "$$this.name",
"birthDate": {
"$toDate": "$$this.birthDate"
}
}
}
}
}
}
])
此外,如果要更新数据库值(不仅要输出 ISODate,还要更改数据库中的值),可以尝试以下查询:update
db.collection.update({},
[
{
"$set": {
// the same $set as before
}
}
])
评论
0赞
AlwaysJunior
2/22/2022
这个方法解决了我的问题,谢谢!
0赞
J.F.
2/22/2022
我已经使用更易于阅读和实现的$toDate进行了更新。
0赞
AlwaysJunior
2/23/2022
这种方法更容易理解。再次感谢你。如果我使用“更新”,我不会覆盖现有数据,对吗?
0赞
J.F.
2/23/2022
是的,使用文档会更新和覆盖。 仅显示数据库中没有更改数据的值,但会显示。update
aggregate
update
评论