Невозможно удалить результат для класса JongoTeste $ 1MongoResult из содержимого - PullRequest
0 голосов
/ 06 апреля 2020

Я использую Java 8, mongo-java-driver 3.10.2 и Jongo 1.3.0.

И я пытаюсь использовать Jon go для выполнения запросов в MongoDB.

I написал небольшой java код, чтобы проверить, как использовать Jon go, см. ниже:

import com.mongodb.DB;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import org.jongo.Aggregate.ResultsIterator;
import org.jongo.Jongo;
import org.jongo.MongoCollection;

public class JongoTeste {

    public static void main(final String[] args) throws InterruptedException {

        class MongoResult {

            private String _id;
            private int count;

        }

        MongoClientURI connectionString = new MongoClientURI("mongodb://localhost");
        MongoClient client = new MongoClient(connectionString);

        DB database = client.getDB("mydb");

        Jongo jongo = new Jongo(database);

        MongoCollection collection = jongo.getCollection("user");

        ResultsIterator<MongoResult> result = collection.aggregate("{'$match' : {'business_account_id' : { $oid : '5e3377bcb1dbae5124e4b6bf'}}}")
            .and("{'$lookup' : {'localField' : 'profile_id','from' : 'profile','foreignField' : '_id','as' : 'profile'}}")
            .and("{'$unwind' : {'path' : '$profile'}}")
            .and("{'$match' : {'profile.type' : 'consultant'}}")
            .and("{'$group' : {'_id' : '$business_account_id','count' : {'$sum' : 1}}}")
            .as(MongoResult.class);         

        while (result.hasNext()) {
            MongoResult r = result.next();
            System.out.println("----");
        } 
    }
}

Но я получаю сообщение об ошибке ниже в строке MongoResult r = result.next();

Exception in thread "main" org.jongo.marshall.MarshallingException: Unable to unmarshall result to class JongoTeste$1MongoResult from content {"_id": {"$oid": "5e3377bcb1dbae5124e4b6bf"}, "count": 1}
    at org.jongo.marshall.jackson.JacksonEngine.unmarshall(JacksonEngine.java:50)
    at org.jongo.ResultHandlerFactory$UnmarshallingResultHandler.map(ResultHandlerFactory.java:43)
    at org.jongo.Aggregate$ResultsIterator.next(Aggregate.java:98)
    at JongoTeste.main(JongoTeste.java:51)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize Class JongoTeste$1MongoResult (of type local/anonymous) as a Bean
 at [Source: de.undercouch.bson4jackson.io.LittleEndianInputStream@5158b42f; pos: 0]
    at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:251)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:269)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
    at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
    at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:477)
    at com.fasterxml.jackson.databind.ObjectReader._findRootDeserializer(ObjectReader.java:1813)
    at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1570)
    at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1234)
    at org.jongo.marshall.jackson.JacksonEngine.unmarshall(JacksonEngine.java:47)
    ... 3 more
Caused by: java.lang.IllegalArgumentException: Can not deserialize Class JongoTeste$1MongoResult (of type local/anonymous) as a Bean
    at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.isPotentialBeanType(BeanDeserializerFactory.java:810)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:139)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:406)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:352)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264)
    ... 10 more

Как мне заставить этот код работать?

Я читал другие вопросы о стековом потоке, но не смог выяснить проблему.

...