2017-09-21 3 views
0

Supposons qu'il s'agit d'une entrée de données JSON et que le nom de la collection est placé.Comment utiliser l'opération d'agrégation de mongoDB dans des données JSON

[ 
    { 
     "time": ISODate("2016-11-27T011:43:01.000+05:30"), 'userId': 'abc' 
    }, 
    { 
     "time": ISODate("2016-11-28T01:43:01.000+05:30"),'userId': 'pqr' 
    }, 
    { 
     "time": ISODate("2016-11-27T08:43:01.000+05:30"), 'userId': 'abc' 
    }, 
    { 
     "time": ISODate("2016-11-27T02:43:01.000+05:30"), 'userId': 'abc' 
    }, 
    { 
     "time": ISODate("2016-11-27T011:43:01.000+05:30"), 'userId': 'pqr' 
    }, 
    { 
     "time": ISODate("2016-11-28T011:43:01.000+05:30"), 'userId': 'abc' 
    } 
] 

En données JSON données ci-dessus, nous avons maintenu journal utilisateur dans une collection. nous devons trouver les données lorsque l'utilisateur a d'abord enregistré correspondant à la date. Nous devons effectuer l'opération sur ces données de json de sorte que la production devrait venir dans ce format.

Sortie

[{"date": "2016-11-27", 
    'user': [{'userId':'abc','time': ISODate("2016-11-27T08:43:01.000+05:30")}, 
      'userId':'pqr','time': ISODate("2016-11-27T11:43:01.000+05:30")] 
}, 
{"date": "2016-11-28", 
    'user': [{'userId':'abc','time': ISODate("2016-11-28T11:43:01.000+05:30")}, 
      'userId':'pqr','time': ISODate("2016-11-28T1:43:01.000+05:30")] 
}] 
+0

@Guys! s'il vous plaît ne pas se concentrer sur le format de date.vous imprimez dans n'importe quel format –

Répondre

1

Vous pouvez ci-dessous requête d'agrégation.

db.collection_name.aggregate([ 
    { 
    "$sort": { 
     "userId": 1, 
     "time": -1 
    } 
    }, 
    { 
    "$group": { 
     "_id": { 
     "date": { 
      "$dateToString": { 
      "format": "%Y-%m-%d", 
      "date": "$time" 
      } 
     }, 
     "userId": "$userId" 
     }, 
     "time": { 
     "$first": "$time" 
     } 
    } 
    }, 
    { 
    "$group": { 
     "_id": "$_id.date", 
     "user": { 
     "$push": { 
      "userId": "$_id.userId", 
      "time": "$time" 
     } 
     } 
    } 
    }, 
    { 
    "$sort": { 
     "_id": 1 
    } 
    } 
])