当前位置: 首页 > 知识库问答 >
问题:

是否从嵌套集合中筛选对象?[副本]

松献
2023-03-14

设备类型。Java语言

private String Id;
private List<DeviceTelemetry> telemetries = new ArrayList<>()
//Getter Setter

elemetry.java枚举类

private String name;
private String description;
//Getter Setter

我想获取所有DeviceType Id,其DeviceTeletry名称以“System”(字符串)开头。

我做了这样的事情:-

List<DeviceType> filteredStartWithDeviceType =deviceTypes.stream().
             filter(f -> f.getTelemetries().stream()
             .anyMatch(g -> g.getName().startsWith("System"))).collect(Collectors.toList());

有谁能告诉我如何从中获取DeviceType Id吗?

共有1个答案

连成益
2023-03-14

您只需要将值从设备类型映射到字符串

List<String> filteredStartWithDeviceType = deviceTypes.stream()
    .filter(f -> f.getTelemetries().stream()
             .anyMatch(g -> g.getName().startsWith("System")))
    .map(DeviceType::getId) // or .map(dt -> dt.getId()) if you prefer this syntax
    .collect(Collectors.toList());
 类似资料:
  • 我是Elasticsearch的新手,我试图创建一个过滤器来检索具有特定属性的文档。 属性在映射中定义为嵌套对象,如下所示: 我试图以以下形式执行一个复杂的查询: 这是elasticsearch 2.x。我做错了什么?

  • 我想使用mongodb聚合匹配操作,通过字符串中多个嵌套对象的对象Id筛选mongodb集合。但是,在匹配操作中,spring data mongodb不会将字符串值转换为对象Id。 当Spring data mongodb将字符串值转换为oid时,我能够通过字符串值中的多个文档Id(主键,而不是嵌套对象的对象Id)过滤文档,没有任何问题: 我想要达到的目标如下: 但我总是得到以下信息: Spri

  • 我希望能够过滤评论,所以只有真正的评论将为每个博客对象显示。我想展示每一个博客,而不仅仅是那些有真实评论的博客。我在网上找到的所有其他解决方案似乎都影响了我的博客对象。有没有一种方法可以过滤掉评论对象而不影响所有博客的查询? 因此,上述示例将在查询之后返回: 该示例仍然显示了没有评论或错误评论的博客。 这可能吗? 我一直在使用这个示例中的嵌套查询:ElasticSearch-Get只匹配嵌套对象与

  • 作为这个答案的后续(关于方法1),我想更进一步: 我想根据某些标准筛选子对象。我尝试了下面的查询,但它仍然没有筛选出孙实体下的对象。 关联类实体 类关系ParentEntity<1-OneTomany-x>ChildEntity<1-OneTomany-x>GrandChildEntity

  • 我试图在嵌套筛选器聚合中使用嵌套查询筛选器。当我这样做时,聚合返回时没有任何项。如果我将查询更改为简单的旧match_all筛选器,我确实会在bucket中获得项。 下面是我正在使用的映射的简化版本: 该查询在聚合上使用match_all筛选器:

  • 我正试图找出如何解决这两个问题,我有我的ES 5.6索引。 我需要创建两个单独的脚本过滤器: 1-筛选employee数组大小==3的文档 2-筛选数组第一个元素为“name”==“John”的文档 我试图做一些第一步,但我无法迭代列表。我总是有一个空指针异常错误。