Du kan opnå dette med aggregeringsrammen ved hjælp af en $group
at gruppere dokumenter efter device_id
, efterfulgt af et arrayToObject
for at få en værdi som nøgle:
forespørgslen ser sådan ud:
db.collection.aggregate([{ "$group":{ "_id":"$device_id", "dt":{ "$push":"$date" } }}, { "$ replaceRoot":{ "newRoot":{ "$arrayToObject":{ "$concatArrays":[ [{ "k":"$_id", "v":"$dt" }] ] } }}])
resultater:
[ { "D4YK2-R2D20-KYPI9":[ "2018-04-01T00:00:00.000Z" ] }, { "ML39A-341D4-UI041":[ "2018-03-28T00:00 :00.000Z", "2018-03-29T00:00:00.000Z" ] }]
du kan prøve det her:mongoplayground.net/p/t9AjMA0nXCn