Внутренний массив сортировки Mongodb
Я искал какое-то время и не могу сортировать внутренний массив и хранить это в документе, с которым я сейчас работаю.
{ "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") } ] } } }
Поэтому я хочу, чтобы элемент возвращался в качестве службы, но мой массив обновлений отсортирован. Пока у меня есть shell:
db.servers.aggregate( {$unwind:'$service'}, {$project:{'service.apps':1}}, {$unwind:'$service.apps'}, {$project: {'service.apps.updates':1}}, {$sort:{'service.apps.updates.date':1}});
Кто-нибудь думает, что они могут помочь в этом?
- используя $ slice operator для получения последнего элемента массива в mongodb
- Какая потребность в массиве с нулевыми элементами?
- Solr документы с дочерними элементами?
- Совокупный $ lookup Общий размер документов в соответствующем конвейере превышает максимальный размер документа
- Как отключить сущность из контекста в Entity Framework?
- Наследование структуры в C ++
- Создание структуры для агрегирования
- $ lookup для ObjectId's в массиве
- Групповой результат на 15 минут времени в MongoDb
- Поиск по нескольким коллекциям в MongoDB
- Согласование структуры агрегации mongodb по вложенным документам
- Выполнение case-statement в структуре агрегации mongodb
- Добавьте какой-то номер строки в команду / конвейер агрегата mongodb
Вы можете сделать это с помощью $unwind
массив updates
, сортируя результирующие документы по date
и затем $group
их вместе на _id
используя отсортированный порядок.
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'}})