analyse d'agrégation mongoDB

Introduction

Les opérations d'agrégation sont en fait utilisées pour l'analyse statistique des données. En termes simples, elles peuvent être comprises comme des opérations d'agrégation dans SQL . Les opérations d'agrégation dans MongoDB sont préparées pour l'analyse de données volumineuses. Voici une brève introduction à l' utilisation de l' agrégat

Analyse d'agrégation en mode pipeline

Le cadre d'agrégation de MongoDB est implémenté en référence aux commandes de pipeline sous UNIX . Les données passent par un pipeline à plusieurs étapes, et chaque étape traite les données et renvoie finalement l'ensemble de résultats requis.  
L'agrégation de pipeline peut fonctionner sur une collection fragmentée ( Le pipeline d'agrégation peut fonctionner sur une collection fragmentée. )  
L'agrégation de pipeline peut utiliser des index pour améliorer les performances à certaines étapes. De plus, l'agrégation de pipeline a également une étape d'optimisation interne (plus tard, l'agrégation de pipeline L'optimisation sera discuté).

Les exploitants de pipelines courants sont les suivants :

opérateur

illustrer

$ match

filtrer les documents

limite $

Limiter les données des fichiers dans le pipeline

$ sauter

ignorer le nombre de documents spécifié

$sort

Trier les documents saisis

$groupe

Calculer les résultats agrégés après regroupement des documents

$out

Documents de sortie vers une collection spécifique (doit être la dernière étape de l'opération de pipeline)

Opérateurs d'agrégation utilisés avec $ group :

opérateur

illustrer

$premier

Renvoie la première valeur après le groupe

$dernier

Renvoie la dernière valeur après le groupe

$max

La valeur maximale après le groupe

$min

La valeur minimale après le groupe

$moy

moyenne après groupe

$ somme

somme après groupe

Exemple:

db.Collection.aggregate(

        {$match : {"appId" : "2e1800b22ae70600", "leaveTime" : {"$gt" : ISODate("2017-07-12T00:00:00"), "$lt" : ISODate("2017-07- 13T00:00:00")}}},

        {$group : {"_id" : "$leaveMethod", "count" : {$sum : 1}}},

        {$sort : {"_id" : 1}}

  )

Intégration dans les opérations Java

Importez d'abord le package de pilotes Java de mongodb mongo-java-driver-3.2.2.jar

Utilisez le nouvel objet Document() pour remplacer la condition {"XXX": "XXX"} ci-dessus

Exemple:

public String aggregateLeaveMethodByDate(String app_id, Date beginDate, Date endDate) throws Exception {

              MongoCollection<Document> collection = PluginMongo.instance().getDatabase().getCollection(MongoCollectionName.PARKING_RECORD);

              Document sub_match = new Document();

              sub_match.put("appId", app_id);

              sub_match.put("leaveTime", new Document("$gt", beginDate).append("$lt", endDate));

             

              Document sub_group = new Document();

              sub_group.put("_id", "$leaveMethod");

              sub_group.put("count", new Document("$sum", 1));

             

              Document match = new Document("$match", sub_match);

              Document group = new Document("$group", sub_group);

              Document sort = new Document("$sort", new Document("_id", 1));

             

              List<Document> aggregateList = new ArrayList<Document>();

              aggregateList.add(match);

              aggregateList.add(group);

              aggregateList.add(sort);

             

              JSONObject ret_obj = new JSONObject();

              AggregateIterable<Document> resultset = collection.aggregate(aggregateList);

              MongoCursor<Document> cursor = resultset.iterator();

             

              try {

                     while(cursor.hasNext()) {

                            Document item_doc = cursor.next();

                            int leaveMethod = item_doc.getInteger("_id", 0);

                            int count = item_doc.getInteger("count", 0);

                           

                            LeaveMethodEnum leaveMethodVal = LeaveMethodEnum.fromType(leaveMethod);

                            ret_obj.put(leaveMethodVal.name(), count);

                     }

              } finally {

                     cursor.close();

              }

             

              return ret_obj.toJSONString();

       }

Je suppose que tu aimes

Origine blog.csdn.net/caicai250/article/details/81236888
conseillé
Classement