L'agrégation somme au Printemps de Données MongoDB

J'ai MongoDB Page et Post collections. Chaque page du document a champ postIds qui est la matrice de post Id (objets de Chaîne). Je veux utiliser l'agrégation de compter le nombre de posts (=nombre d'éléments dans le tableau postIds) pour chaque page. J'ai écrit Shell Mongo fonction d'agrégation qui renvoie exactement ce que je veux:

db.page.aggregate([
    {$unwind : '$postIds'},
    {$group : {_id: '$_id', 'sum': { $sum: 1}}}
])

et il renvoie ce résultat:

{ "_id" : "3", "sum" : 3 }
{ "_id" : "2", "sum" : 3 }

Cela signifie que la page avec l'id 3 a 3 postes, et la page avec l'id 2 a 3 postes en tant que bien, ce qui est correct.

Maintenant, je voulais écrire même à l'aide de Printemps MongoDB Agrégation, et a écrit ce simple test JUnit:

    /**
     * Test page posts count
     */
    @Test
    public void testPagePostsCount() throws Exception{
        MongoTemplate template = repository.getMongoTemplate();
        Page page = new Page();
        page.setPageId("2210");
        page.setUserId("azec");
        List<String> postList = new ArrayList<String>();
        postList.add("53eb1a560efbe048c7ea698d");
        postList.add("53eb1a6b0efbe048c7ea698e");
        page.setPostIds(postList);
        template.save(page);

        Aggregation agg = newAggregation(
            match(Criteria.where("pageId").is("2210")),
            unwind("postIds"),
            group("_id").sum("1").as("sum")
            //project("$sum").and("pageId").previousOperation()
        );

        AggregationResults<PostCount> results = template.aggregate(agg, "page", PostCount.class);
        List<PostCount> postCount = results.getMappedResults();

        System.out.println("Done!");
    }

Toutefois, cette agrégation requête renvoie ce natif de Mongo requête:

2014-08-13 20:06:07,949 DEBUG [org.springframework.les données.mongodb.de base.MongoTemplate] - l'Exécution de l'agrégation:

{
   "aggregate":"page",
   "pipeline":[
      {
         "$match":{
            "pageId":"2210"
         }
      },
      {
         "$unwind":"$postIds"
      },
      {
         "$group":{
            "_id":"$_id",
            "sum":{
               "$sum":"$1"
            }
         }
      }
   ]
}

Questions:
1. Comme vous pouvez le voir, la différence est avec le $valeur de somme de $1. J'ai besoin d'y passer numéro 1 au lieu de $1, mais je ne suis pas sûr de savoir comment.
2. Ai-je besoin d'exploitation du projet ici?

Grâce

InformationsquelleAutor azec-pdx | 2014-08-13