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。
MongoCollection
、MongoDatabase
、Document
/Bson
是 3.x 类 而 DBCollection
、DB
和 BasicDBObject
/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/
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。
MongoCollection
、MongoDatabase
、Document
/Bson
是 3.x 类 而 DBCollection
、DB
和 BasicDBObject
/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/