8
votes

Données de printemps MongoDB - Intégration-cadre d'agrégation

J'ai commencé à utiliser la base de données mongodb dans mon application et pour l'accès aux données, j'ai choisi les données de ressort pour MongoDB.

Je fais la référence et la documentation de l'API écrémé et je peux voir qu'il y a une intégration de la carte, mais qu'en est-il du cadre d'agrégation? Je peux voir que cela prend en charge le groupe par opération, qui indiquerait qu'il prend en charge $ Group l'exploitant en jugeant à partir de ceci: http://docs.mongodb.org/manual/reference/sql-agregation-comparison/ , mais qu'en est-il des autres opérateurs, ne sont pas pris en charge pour l'instant?

Je pose cette question parce que je voulais savoir quel type d'intégration avec Mongodb SPING Data fournit donc je sais à quoi m'attendre, pour ainsi dire.


0 commentaires

4 Réponses :


5
votes

Les données du ressort mongoopérations.group () méthode est mappée sur db.collection.group () Commande MongoDB et non le groupe $ Fonction d'agrégation. Actuellement, il n'y a pas de support dans les données de printemps Mongodb pour le cadre d'agrégation. Carte Réduire, comme vous l'avez mentionné, est supporté si


2 commentaires

Merci de clarifier cela pour moi.


Vous pouvez cependant faire un pas au pilote Java Mongodb lorsque vous avez besoin de pouvoirs de cadre d'agrégation. mongoops.gecollection ("YourCollection"). Agrégat (...)



8
votes

Spring Data 1.3.0.RC1 est disponible et prend en charge le cadre d'agrégation.

Par exemple: L'agrégation de coquille COMAND: P>

AggregationOperation group = Aggregation.group("card_acceptor").sum("amount").as("amount_sum").count().as("tran_count");
Aggregation aggregation = Aggregation.newAggregation(match, group);


1 commentaires

Qu'en est-il de exemple ou sélectionner aléatoire? docs.mongodb.org/master/Reference/Perateur/agregistration/sampl e



0
votes

Voici comment obtenir la somme d'un champ particulier.

private Map<String, Long> getTotalMap(){
        /*
            db.pDSSummaryModel.aggregate([{
                $group: {
                    _id: null,
                    total: {
                        $sum: '$totalUniqueCustomerCount'
                    }
                }
            }])
         */
        Aggregation aggregations = newAggregation(
                group("null").sum("totalUniqueUserCount").as("userTotal")
                        .sum("totalUniqueCustomerCount").as("customerTotal"),
                project("customerTotal", "userTotal")
        );

        AggregationResults<DBObject> results = mongoTemplate.aggregate(aggregations, "pDSSummaryModel", DBObject.class);
        List<DBObject> fieldList = results.getMappedResults();
        Map<String, Long> map = new HashMap<>();
        if(fieldList != null && !fieldList.isEmpty()) {
            for(DBObject db: fieldList){
                map.put("userTotal", parseLong(db.get("userTotal").toString()));
                map.put("customerTotal", parseLong(db.get("customerTotal").toString()));
            }
        }
        return map;

    }


0 commentaires

1
votes
 Aggregation aggregation = newAggregation(
        match(Criteria.where("salesyear").is(year)),
        group("brand","salesyear").sum("numberOfCars").as("total"),
        sort(Sort.Direction.ASC, previousOperation(), "brand")    
      );

0 commentaires