Eg:- Following is a sample document in a collection 'clubs',
Sample document
{
"_id" : ObjectId("5cb8218ce2911e7c707e27fa"),
"name" : "name 1",
"members" : {
"user_1" : {
"created" : ISODate("2019-04-18T07:04:44.748Z"),
"lastActive" : 1555584757282,
"state" : 1,
"unreadMessages" : 0,
"userId" : "user_1_id"
},
"user_2" : {
"lastActive" : 1555588409686,
"state" : 1,
"unreadMessages" : 0,
"userId" : "user_2_id"
}
}
}
Mongo DB query should return the following fields :-
Desired Output-
{
{
"_id" : ObjectId("5cb8218ce2911e7c707e27fa"),
"name" : "name 1",
"members" : {
"user_1" : {
"lastActive" : 1555584757282
},
"user_2" : {
"lastActive" : 1555588409686
}
}
}
}
You can use below aggregation
db.collection.aggregate([
{ "$addFields": {
"members": {
"$arrayToObject": {
"$map": {
"input": { "$objectToArray": "$members" },
"in": {
"k": "$$this.k",
"v": { "lastActive": "$$this.v.lastActive" }
}
}
}
}
}}
])
Example
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With