mongodb java 中的不可转换类型错误?

inconvertible types error in mongodb java?

 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));

该代码抛出此错误:

could not parse error message: required: List found: List

我该如何解决这个问题?

您正在混合使用 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/