MongoTemplate聚合获得不同的值

时间:2020-06-13 21:58:40

标签: mongodb mongodb-query aggregation-framework mongotemplate

我正在尝试获取一个不同元素的列表,作为我在MongoTemplate聚合函数中的最终结果。而且我在汇总的中间收到了一个像下面这样的列表,

[
   {
      "_id":"333",
      "name":"cat Three name",
      "description":"cat item description"
   },
   {
      "_id":"222",
      "name":"cat Two name",
      "description":"cat item description"
   },
   {
      "_id":"222",
      "name":"cat Two name",
      "description":"cat item description"
   },
   {
      "_id":"333",
      "name":"cat Three name",
      "description":"cat item description"
   }
]

如何添加另一个AggregationOperation以获得不同的值作为最终结果,如下所示?

[
   {
      "_id":"222",
      "name":"cat Two name",
      "description":"cat item description"
   },
   {
      "_id":"333",
      "name":"cat Three name",
      "description":"cat item description"
   }
]

1 个答案:

答案 0 :(得分:1)

添加两个步骤:

db.collection.aggregate([
  {
    $group: {
      _id: "$_id",
      data: {
        $first: "$$ROOT"
      }
    }
  },
  {
    $replaceRoot: {
      newRoot: "$data"
    }
  }
])

MongoPlayground

Spring-mongo

Aggregation agg = newAggregation(
    ... // Your pipeline
    group("_id").first("$$ROOT").as("data"),
    replaceRoot("data")
);
相关问题