【问题标题】:inconvertible types error in mongodb java?mongodb java中的不可转换类型错误?
【发布时间】:2017-03-21 18:41:24
【问题描述】:
 final DBObject group = new BasicDBObject("$group", groupFields);
 DBObject sort = new BasicDBObject("$sort", new BasicDBObject("NAME", -1));
 AggregateIterable <Document> aggregate = collection.aggregate((List<? extends Bson>) asList(group,sort));

该代码抛出此错误:

无法解析错误消息:必需:列表 找到:列表

我该如何解决这个问题?

【问题讨论】:

    标签: java mongodb aggregation-framework mongodb-java


    【解决方案1】:

    您正在将 java 驱动程序 2.x api 与 3.x 驱动程序 api 混合。

    MongoCollectionMongoDatabaseDocument/Bson 是 3.x 类,而 DBCollectionDBBasicDBObject/DBObject 是 2.x 类。

    看起来您使用的是 3.x 驱动程序,因此您必须执行以下操作。

     MongoClient mongoClient = new MongoClient();
     MongoDatabase db = mongoClient.getDatabase("db");
     MongoCollection<Document> collection = db.getCollection("collection");
    
     BsonField id = Accumulators.first("ID", "$ID");
     BsonField name = Accumulators.first("NAME", "NAME");
     BsonField amount = Accumulators.sum("amount", "$amount");
    
     Bson group = Aggregates.group("$NAME", id, name, amount);
     Bson sort = Aggregates.sort(Sorts.descending("NAME"));
    
     List<Document> results = collection.aggregate(Arrays.asList(group, sort)).into(new ArrayList<>());
    

    更多信息在这里http://mongodb.github.io/mongo-java-driver/3.4/driver/getting-started/quick-start/

    【讨论】:

    猜你喜欢
    • 2018-06-11
    • 2012-10-02
    • 1970-01-01
    • 2022-08-09
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2016-05-29
    相关资源
    最近更新 更多