복붙노트

[MONGODB] MongoDB를 놓아 내부 어레이

MONGODB

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")
              }
            ]
        }
     }
 }

나는 서비스로 반환 할 항목을 유지하려면,하지만 그래서 내 업데이트 배열 정렬. 지금까지 쉘 내가 가진 :

db.servers.aggregate(
        {$unwind:'$service'},
        {$project:{'service.apps':1}},
        {$unwind:'$service.apps'}, 
        {$project: {'service.apps.updates':1}}, 
        {$sort:{'service.apps.updates.date':1}});

누군가는이에 도움이 될 수 있습니다 생각하십니까?

해결법

  1. ==============================

    1.당신은 정렬 순서를 사용하여 _id 다시 함께 그룹화 한 후 $, 업데이트 배열을 풀기 날짜에 의해 생성 된 문서를 정렬 및 $하여이 작업을 수행 할 수 있습니다.

    당신은 정렬 순서를 사용하여 _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'}})
    
  2. from https://stackoverflow.com/questions/15388127/mongodb-sort-inner-array by cc-by-sa and MIT license