1

I have Mongo query that I executed using NoSqlBooster(Tool) and getting expected out put. How can I convert same query in Java object.

This is Mongo Query :

db.revenue.aggregate([{
    $match: {
        hotelId: "122"
        sessionId: "dgd"
    }
}, {
    $group: {
        _id: {
             date: "$date",
             serviceOrFacilty: "$serviceOrFacilty"
         },
         "SUM(orderTotalAmount)":{
              $sum: "$orderTotalAmount"
         },
         "SUM(grandTotalAmount)":{
              $sum: "$grandTotalAmount"
         },
      }
},   {
      $project: {
          date: "$_id.date",
          serviceOrFacilty: "$_id.serviceOrFacilty",
          "SUM(orderTotalAmount)": "$SUM(orderTotalAmount)",
          "SUM(grandTotalAmount)": "$SUM(grandTotalAmount)"
      }
}])

And this is my entity/data base classs

public class RevenueReportsTemporaryStorage {
    @Id
    private String id;
    @Field(value = FIELDS.SESSSION_ID)
    private String sessionId;
    @Field(value = FIELDS.HOTEL_ID)
    private String hotelId;
    @Field(value = FIELDS.DATE)
    private String date;
    @Field(value = FIELDS.SERVICE_OR_FACILITY)
    private String serviceOrFacility;
    @Field(value = FIELDS.CATEGORY)
    private String serviceCategory;
    @Field(value = FIELDS.USER_NAME)
    private String userName
    @Field(value = FIELDS.ORDER_TOTAL)
    private Double orderTotalAmount;
    @Field(value = FIELDS.ADJUSTMENT)
    private Double adjustmentAmount;
    @Field(value = FIELDS.DISCOUNT)
    private Double discount;
    @Field(value = FIELDS.TAX)
    private Map<String, Double> taxAmountWithHead;
    @Field(value = FIELDS.GRAND_TOTAL)
    private Double grandTotalAmount;
}

By using fields, how can write the query.

2

1 Answer 1

1

Try this.

Aggregation aggregation = newAggregation(
            match(Criteria.where(FIELDS.HOTEL_ID).is(hotelId).and(FIELDS.SESSSION_ID).is(uniqueId)),
            group(FIELDS.DATE,FIELDS.SERVICE_OR_FACILITY).sum(FIELDS.ORDER_TOTAL).as(FIELDS.ORDER_TOTAL).sum(FIELDS.ADJUSTMENT)
                    .as(FIELDS.ADJUSTMENT).sum(FIELDS.DISCOUNT).as(FIELDS.DISCOUNT).sum(FIELDS.GRAND_TOTAL)
                    .as(FIELDS.GRAND_TOTAL),
            sort(Sort.Direction.ASC, previousOperation(),FIELDS.DATE,FIELDS.SERVICE_OR_FACILITY));
    AggregationResults<RevenueReportsTemporaryStorage> groupResults = mongoTemplate.aggregate(aggregation,
            RevenueReportsTemporaryStorage.class, RevenueReportsTemporaryStorage.class);
    return groupResults.getMappedResults();
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.