java.lang.ClassCastException: com.mongodb.client.internal.AggregateIterableImpl, java.util.ArrayList'e dönüştürülemez
Aşağıda belgem var. RequestParam System Bob ile aşağıdaki koleksiyonla eşleştirmem ve requestParam Email Systems.Bob.System ile eşleşirse sonuç değerini almam gerekiyor.
İşte RequestParam sistemdir
{
"_id" : ObjectId("5f0890e870e631865877e"),
"user" : "testuser",
"Email" : "[email protected]",
"Batch Systems" : [
"STAR",
"STORY",
"ITEMS",
],
"Email Systems" : [
{
"Bob" : {
"System" : "Bob",
**"result"** : true
}
},
{
"Wild" : {
"System" : "Wild",
"result" : true
}
},
{
"CRaft" : {
"System" : "Craft",
"result" : false
}
}
]
}
Aşağıdaki sözdizimini denedim, java.lang.ClassCastException: com.mongodb.client.internal.AggregateIterableImpl java.util.ArrayList'e dönüştürülemiyor. Biri bana aşağıdaki kodda neyin yanlış olduğunu söyleyebilir ve sözdizimi konusunda bana yardım edebilir mi?
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)))));
Yanıtlar
Users.aggregate () tarafından döndürülen nesne bir AggregateIterable'dır. ArrayList bu arabirimi uygulamaz, bu nedenle dönüştürme işleminiz başarısız olur. AggregateIterable veya AggregateIterableImpl olarak yayınlamayı ve onunla çalışmayı deneyin.
users.aggregate()bir hata AggregateIterabledeğil bir ArrayListdöndürür. Bir oluşturabilir Iteratorgelen AggregateIterableve daha sonra bir doküman eklemek ArrayList.
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());
}
Sürücü sürümüne göre ayrıntılı yanıt için Java sürücüsüyle MongoDB toplamasına bakın