How to print MongoDB aggregation queries in Java using spring-data-mongodb

Viewed 327

I need to print the MongoDB aggregation query used in Java code (for debugging an empty response). I don't see a way to print the GroupOperation object, org.springframework.data.mongodb.core.aggregation.GroupOperation

I see this method: public Document toDocument(AggregationOperationContext context), but I don't understand how to pass a value for context.

I need a way to print this object.

Here are my code snippets:

Query in Java code:

GroupOperation groupOperation = new GroupOperation(
                Fields.fields("dbHost"))
                .first("dbUser").as("dbUser")
                .first("dbPassword").as("dbPassword");

System.out.println("groupOperation = " + groupOperation);

List<AggregationOperation> aggregationOperations = Lists.newArrayList(groupOperation);
Aggregation agg = Aggregation.newAggregation(aggregationOperations)
             .withOptions(Aggregation.newAggregationOptions().allowDiskUse(true).build());
AggregationResults<Document> aggInfo = mongoTemplate.aggregate(agg, "schedulerInfo", Document.class);
List<Document> docs = aggInfo.getMappedResults();

System.out.println("docs = " + docs);

Output:

groupOperation = org.springframework.data.mongodb.core.aggregation.GroupOperation@1188e820
docs = []

Corresponding query in Mongo shell:

db.schedulerInfo.aggregate([{"$group": {"_id": "$dbHost", "dbUser": { "$first": "$dbUser" },"dbPassword": { "$first": "$dbPassword" }}}])
0 Answers
Related