将 MongoDB 查询转换为 Spring MongoDB 语法

Avi*_*tel 1 spring mongodb

您好,我无法将以下 mongoDB 查询转换为 spring 查询,我尝试了多种方法,但没有得到结果。

db.getCollection('FarmerCropDataLog').aggregate([
        {
            "$match" : 
            {
                "cropData.crop" : "RICE",
                 "creationTime" :
                  {
                      $lt  : 1551447981473.0
                  }
            }
        },
        {
            "$group" :
            {
                _id : null,
                "average" :{
                        $avg : "$cropData.cropPrice"
                },
                "max" :{
                        $max : "$cropData.cropPrice"
                },
                "min":{
                        $min : "$cropData.cropPrice"
                }
            }
        }
    ])
Run Code Online (Sandbox Code Playgroud)

我已经编写了以下代码,但无法考虑下一步。

Query query = new Query();

query.addCriteria(Criteria.where(FarmerCropDataLog.Constants.CROP_LOG).elemMatch(Criteria.where(CropData.Constants.CROP).is(getComparisonSheet.getCrop())));

query.addCriteria(Criteria.where(FarmerCropDataLog.Constants.CREATION_TIME).gt(Year * DIFF));
Run Code Online (Sandbox Code Playgroud)

Man*_*ani 8

您是否考虑过使用 MongoDB 指南针?这将使您的工作变得非常简单。

  1. 打开MongoDB compass连接到您的实例
  2. 聚合选项卡,构建您的管道
  3. 单击save pipeline选项旁边的 3 个点(...)
  4. 选择export to language并选择Java
  5. 您的查询已准备好

这是java查询

Arrays.asList(match(and(eq("cropData.crop", "RICE"), lt("creationTime", 1551447981473.0d))), group(new BsonNull(), avg("average", "$cropData.cropPrice"), max("max", "$cropData.cropPrice"), min("min", "$cropData.cropPrice")))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述