У меня проблема с работой проекта при использовании агрегации в Spring Data Mongo 1.3.2-RELEASE. Та же операция отлично работает, когда я использую Spring Data Mongo 1.3.1-RELEASE:
Сначала я уменьшаю свои документы, проецируя только два поля и переименовывая их в x и y. Затем я вызываю групповую операцию для этих двух полей (x, y), включая операцию подсчета (с именем xPerY). После этой группировки я хочу спроецировать эти два поля, которые теперь вложены в поле _id в не вложенные поля, называемые x и y (без _id). В результате я надеюсь получить документы, которые состоят только из xPerY, x и y. Следующий код работал нормально для 1.3.1-RELEASE, но не для 1.3.2-RELEASE:
AggregationOperation projectFirst = Aggregation.project( "x", "y" ).and( xField ).as( "x" ).and( yField ).as( "y" );
AggregationOperation group = Aggregation.group( "x", "y" ).count( ).as( "xPerY" );
AggregationOperation project = Aggregation.project( "xPerY", "x", "y" ).andExclude( "_id" );
aggregation = Aggregation.newAggregation( projectFirst, group, project );
В 1.3.2-RELEASE поля x и y после агрегации получат значение 0.
Проект AggregationOperation в 1.3.2-RELEASE создает следующий json: {"$ project": {"xPerY": 1, "x": 1, "y": 1, "_id": 0}}
Проект AggregationOperation в 1.3.1-RELEASE создает следующий json: {"$ project": {"xPerY": "$ xPerY", "x": "$ _id.x", "y": "$ _id.y" "," _id ": 0}}