Запрос MongoDB к Spring mongoTemplate

у меня есть этот запрос монго:

    db.getCollection('My_collection_name').aggregate([
   { $project: { warehouses: { $objectToArray: "$outputVariables" } } },
   { $unwind: "$warehouses" },
   { $group: { _id: "$warehouses.k" }}
])

кто-нибудь может помочь мне перевести весенний mongoTemplate?

Спасибо


person Davide Boldrin    schedule 13.12.2019    source источник


Ответы (1)


Запрос должен быть написан следующим образом:

import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;
...

AggregationOperation project = project()
        .and(ObjectToArray.valueOfToArray("outputVariables")).as("warehouses");

AggregationOperation unwind = unwind("warehouses");

AggregationOperation group = Aggregation.group("warehouses.k");

Aggregation aggregation = Aggregation.newAggregation(
                project,
                unwind,
                group);

String collectionName = "My_collection_name";
System.out.println("aggregation=" + aggregation);
this.mongoTemplate.aggregate(aggregation, collectionName, Output.class);

Он генерирует вывод:

aggregation={ "aggregate" : "__collection__", "pipeline" : [{ "$project" : { "warehouses" : { "$objectToArray" : "$outputVariables" } } }, { "$unwind" : "$warehouses" }, { "$group" : { "_id" : "$warehouses.k" } }] }
person lquitadamo    schedule 13.12.2019