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

java.lang.类异常:com.mongodb.client.internal.聚合IterableImpl不能强制java.util.ArrayList

关志勇
2023-03-14

我有以下文件。我需要用下面的集合与requestParam系统匹配,如果requestParam与电子邮件系统匹配,则需要获得结果值。上下快速移动系统

这里请求Param是系统

{ 
    "_id" : ObjectId("5f0890e870e631865877e"), 
    "user" : "testuser", 
    "Email" : "testuser@sample.com", 
    "Batch Systems" : [
        "STAR", 
        "STORY", 
        "ITEMS",    
    ], 
    "Email Systems" : [
        {
            "Bob" : {
                "System" : "Bob", 
                **"result"** : true
            }
        }, 
        {
            "Wild" : {
                "System" : "Wild", 
                "result" : true
            }
        },
        {
            "CRaft" : {
                "System" : "Craft", 
                "result" : false
            }
        }
    ]
}

我已经尝试了下面的语法,得到了java.lang.ClassCastExctive:com.mongodb.client.internal.Aggregate IterableImpl不能转换为java.util.ArrayList。有人能告诉我下面的代码有什么问题,并帮助我与synatx。

MongoDatabase database = this.mongoClient.getDatabase(this.database);
    MongoCollection<Document> user = database.getCollection(COLLECTION);
    Document userQuery = new Document();
    String searchString = new String(system);
    AggregateIterable<Document> user1 =users.aggregate((List<? extends Bson>) new Document("$project",
                new Document("Email Systems",
                        new Document("$match",
                                new Document("Email  Systems.BobSystem",searchString)))));

共有2个答案

相俊迈
2023-03-14

用户。aggregate()返回一个AggregateIterable而不是ArrayList,因此出现错误。您可以从AggregateIterable创建一个迭代器,然后将文档添加到数组列表

MongoDatabase database = this.mongoClient.getDatabase(this.database);
MongoCollection<Document> user = database.getCollection(COLLECTION);
Document userQuery = new Document();
String searchString = new String(system);
AggregateIterable aggregateIterable = users.aggregate(Collections.singletonList(new Document("$project", new Document("Email Systems", new Document("$match", new Document("Email Systems.Bob.System", searchString))))));
// Create an iterator from the iterable
Iterator iterator = aggregateIterable.iterator();
ArrayList<Document> documents = new ArrayList();
// Then iterate over the iterator
while (iterator.hasNext()) {
    documents.add((Document) iterator.next());
}

有关每个驱动程序版本的详细答案,请参阅MongoDB aggregation with Java driver

益阳平
2023-03-14

用户返回的对象。aggregate()是可聚合的。ArrayList未实现此接口,因此强制转换失败。尝试将其转换为AggregateIterable或AggregateIterableImpl。

 类似资料:
  • 我只是想在java中将一些类对象插入到优先级队列中。但是出现错误“com.java.split.MyComp不能转换为java.util.Collection”。我尝试了不同的选项,将不同的参数传递给, 代码: 导入java。util。比较器;导入java。util。优先队列; 但都没有起作用。我有个例外, 线程“main”java中出现异常。lang.ClassCastException:com

  • 在我的项目中,我有这样一个枚举: 我有这个代码: 我有个例外 myMap由数据库中的数据填充,知道它是SQL Server数据库,并且从数据库返回的myKey在数据库中是tinyint类型。 你能告诉我我做错了什么吗?谢谢 当做

  • 我有一个Springbean(),它扩展了一个抽象类()。 导致ClassCastExcture的子类变体: 在我重写子bean中父类的公共非抽象方法之前,一切都正常。之后,当我试图创建该bean的实例时,会抛出一个ClassCastException。 由返回的Bean对象是一个类实例(通过调试器检查)。为什么将对象转换为其抽象的父类不起作用?因此,如果没有在中实现的,一切都很好。有人能告诉我这

  • 例外情况: java.lang.ClassCastException:com.interconnect.library.gcm.util.checkplayServices(util.java:96),com.interconnect.library.gcm.regiseter.handleRegister(regiseter.java:53),com.interconnect.library.g

  • 问题内容: 尝试将结果集强制转换为映射类时,我收到了hibernate类的类强制转换异常…我能够查看返回的结果集中的数据…但是它以Object []的形式返回我可以将Object []设置为List …我可以正确地进行hibernate映射吗?我从查询中获取了正确的数据,但映射不正确… 映射 映射类 参加班 主要 问题答案: 对于测试,我建议您在产生类强制转换异常的语句周围放置一个try-catc

  • 调用AffineTransform: 它驻留在自定义形状类(YingYang)中。 当我进行调用时,当我试图从绘图面板或在类本身(如果我将返回类型更改为YingYang)中将它转换回一个YingYang时,我会得到一个类转换异常。 java.lang.ClassCastException:java.awt.Geom.Path2D$Double不能强制转换为Animation.Yingyang 任何