首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongodb使用spring,将所有行合并在一起,并使用disticnt值

Mongodb使用spring,将所有行合并在一起,并使用disticnt值
EN

Stack Overflow用户
提问于 2022-02-18 14:59:57
回答 1查看 28关注 0票数 1

我使用mongoTemplate实现了一个投影,给出了如下结果:

代码语言:javascript
运行
复制
{"resourcesInspected": ["CD0626UHEA", "CD0626UKE9"]}
{"resourcesInspected": ["CD0GNDPB1E"]}
{"resourcesInspected": ["CD0H7L789D", "CD0H7L8RF7"]}
{"resourcesInspected": ["CD0FTHYK2B"]}
{"resourcesInspected": ["CD04H5K4B1", "CD0725K788", "CD0725K58A"]}
{"resourcesInspected": ["CD06JXHJ8A", "CD04E9LCED"]}

为此,我做到了以下几点:

代码语言:javascript
运行
复制
static final String resourcesInspected ="resourcesInspected";

ProjectionOperation projectionOperation = Aggregation
        .project(resourcesInspected).andExpression("split(resourcesInspected, ',')")
        .as(resourcesInspected)
        .andExclude("_id");

template.aggregate(newAggregation(projectionOperation),"kpi", DBObject.class).getMappedResults()
        .forEach(System.out::println);

现在,我真正想要的是将所有行分组在一个中,因为它是同一个字段,为了最终使每个(键,值)与所有值都是distinct,类似这样:

代码语言:javascript
运行
复制
{"resourcesInspected": ["CD0626UHEA", "CD0626UKE9","CD0626UHEZ","CXX0626UHEA"]}

对于我的上下文,我需要使用MongoOperations(mongoTemplate),我尝试了很多方法,但是我没有得到想要的结果,有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-18 15:07:51

你可以一起去

  • $unwind解构数组
  • 不重复地重建$group

这是剧本

代码语言:javascript
运行
复制
db.collection.aggregate([
  {
    "$unwind": "$resourcesInspected"
  },
  {
    "$group": {
      "_id": null,
      "resourcesInspected": {
        "$addToSet": "$resourcesInspected"
      }
    }
  }
])

Working 蒙戈游乐场

因此,在使用java代码时,需要添加以下内容

代码语言:javascript
运行
复制
 unwind("resourcesInspected"),
 group()
   .addToSet("$resourcesInspected").as("resourcesInspected")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71175558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档