我有一些用戶,結構是這樣的:
{
"_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(...)
}
],
}
uj5u.com熱心網友回復:
如果我理解正確,你可以試試這個:
這里的訣竅是使用$toDate。
因此,要輸出值ISODate而不是時間戳,您可以將此聚合查詢與 a一起使用$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"
}
}
}
}
}
}
])
這里的例子
此外,如果您想更新 DB 值(不僅輸出 ISODate,還可以更改 DB 中的值),您可以嘗試以下update查詢:
db.collection.update({},
[
{
"$set": {
// the same $set as before
}
}
])
這里的例子
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/431864.html
標籤:mongodb
上一篇:連接N個陣列
