Bạn có thể đạt được điều này với khung tổng hợp bằng cách sử dụng $group
để nhóm các tài liệu theo device_id
, theo sau là arrayToObject
để nhận một giá trị làm khóa:
truy vấn trông giống như sau:
db.collection.aggregate([{
"$group": {
"_id": "$device_id",
"dt": {
"$push": "$date"
}
}
}, {
"$replaceRoot": {
"newRoot": {
"$arrayToObject": {
"$concatArrays": [
[{
"k": "$_id",
"v": "$dt"
}]
]
}
}
}
}])
kết quả:
[
{
"D4YK2-R2D20-KYPI9": [
"2018-04-01T00:00:00.000Z"
]
},
{
"ML39A-341D4-UI041": [
"2018-03-28T00:00:00.000Z",
"2018-03-29T00:00:00.000Z"
]
}
]
bạn có thể thử nó tại đây: mongoplayground.net/p/t9AjMA0nXCn