首页 > 解决方案 > 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"
   }
]

标签: mongodbmongodb-queryaggregation-frameworkmongotemplate

解决方案


添加两个步骤:

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

Mongo游乐场

春天-mongo

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

推荐阅读