我有一些來自物聯網設備的資料,我使用以下結構將其存盤在 mongodb 中:
{
data:{
<timeStamp1>:<energyValue1>,
<timeStamp2>:<energyValue2>,
<timeStamp3>:<energyValue3>,...
}
}
例如:
{
"data":{
"1648310504":51,
"1648310404":25,
"1648310304":63
}
}
有沒有辦法將這個檔案解包成聚合管道中的多個檔案,以便該階段的輸出看起來像這樣
檔案 1. { "timestamp":1648310504, "data":51 }
檔案 2. { "timestamp":1648310404, "data":25 }
檔案 3. { "timestamp":1648310304, "data":63 }
uj5u.com熱心網友回復:
也許是這樣的:
db.collection.aggregate([
{
"$addFields": {
"data": {
"$objectToArray": "$data"
}
}
},
{
$unwind: "$data"
},
{
$project: {
timestamp: "$data.k",
data: "$data.v",
_id: 0
}
}
])
解釋:
- 將物件資料轉換為元素為 key->k , value->v 的陣列
- 展開陣列資料,使其分解為單個檔案。
- 按預期將資料子檔案投影到時間戳和資料。
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450658.html
