首页 > 解决方案 > 是否可以在 Spring Data 中使用 ProjectionOperation 来投影数组项?

问题描述

试图将我的 mongo 聚合管道转换为 spring 数据,在 ProjectionOperation 中苦苦挣扎。

这是mongo中的管道:

db.MUREX_GTS_SA.aggregate([
  {
    "$group":{
          "_id": {
              "M_TRN_GRP": "$payload.M_TRN_GRP",
              "M_TRN_FMLY": "$payload.M_TRN_FMLY",
              "M_TRN_TYPE": "$payload.M_TRN_TYPE",
              "M_TP_TRNTYPE": "$payload.M_TP_TRNTYPE"
          }
      }

  },
  {
      "$project":{
          "_id": false,
          "identifiers":[
              {
                  "key": "M_TRN_GRP",
                  "value": "$_id.M_TRN_GRP"
              },
              {
                  "key": "M_TRN_FMLY",
                  "value": "$_id.M_TRN_FMLY"
              },
              {
                  "key": "M_TRN_TYPE",
                  "value": "$_id.M_TRN_TYPE"
              },
              {
                  "key": "M_TP_TRNTYPE",
                  "value": "$_id.M_TP_TRNTYPE"
              },

          ]

      }
  }
]);

客观的

Java 方法接收包含 ["payload.M_TRN_GRP", "payload.M_TRN_FMLY"] 的列表,因为参数是动态的。

我可以使用下面的代码进行分组

    // group
    GroupOperation groupOperation = Aggregation.group(mongoFields.toArray(new String[0]));

现在如何使用项目操作将项目推入数组?

抱歉,我对此很陌生

谢谢

标签: javaaggregation-frameworkspring-data-mongodb

解决方案


推荐阅读