Je cherche depuis un moment maintenant et je n'arrive pas à trier un tableau interne et à le conserver dans le document avec lequel je travaille actuellement.
{
"service": {
"apps": {
"updates": [
{
"n" : 1
"date": ISODate("2012-03-10T16:15:00Z")
},
{
"n" : 2
"date": ISODate("2012-01-10T16:15:00Z")
},
{
"n" : 5
"date": ISODate("2012-07-10T16:15:00Z")
}
]
}
}
}
Je veux donc garder l'article à renvoyer en tant que service, mais avoir mon tableau de mises à jour trié. Jusqu'à présent avec le Shell, j'ai:
db.servers.aggregate(
{$unwind:'$service'},
{$project:{'service.apps':1}},
{$unwind:'$service.apps'},
{$project: {'service.apps.updates':1}},
{$sort:{'service.apps.updates.date':1}});
Quelqu'un pense qu'ils peuvent aider à ce sujet?
Vous pouvez le faire par $unwind
ing le tableau updates
, triant les documents résultants par date
, puis $group
les remettre ensemble sur _id
en utilisant l'ordre trié.
db.servers.aggregate(
{$unwind: '$service.apps.updates'},
{$sort: {'service.apps.updates.date': 1}},
{$group: {_id: '$_id', 'updates': {$Push: '$service.apps.updates'}}},
{$project: {'service.apps.updates': '$updates'}})