java代码在编译时在mongodb中给出错误

我是mongodb的新手,我有以下代码

import com.mongodb.*; import com.mongodb.Block; import com.mongodb.client.AggregateIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import org.bson.types.ObjectId; import static java.util.Arrays.asList; public class getAssets{ public static void main( String args[] ){ Block printBlock = new Block() { @Override public void apply(final Document document) { System.out.println(document.toJson()); } }; MongoClient mongoClient = new MongoClient("localhost",27017); MongoDatabase database = mongoClient.getDatabase("test"); System.out.println("Connect to database successfully"); MongoCollection coll = database.getCollection("asset"); BasicDBList statusList = new BasicDBList(); statusList.add("1"); statusList.add("2"); statusList.add("3"); DBObject statusInClause = new BasicDBObject("$in", statusList); BasicDBList idList = new BasicDBList(); idList.add("123"); DBObject siteIdInClause = new BasicDBObject("$in", idList); DBObject fields = new BasicDBObject("asset.status", statusInClause); fields.put("asset.siteid", siteIdInClause); DBObject unwind = new BasicDBObject("$unwind", "$asset"); DBObject match = new BasicDBObject("$match", fields); AggregateIterable aggr = coll.aggregate(asList(unwind, match)); aggr.forEach(printBlock); mongoClient.close(); } } 

并且我在编译时遇到以下错误

 C:\MongoDB\java>javac -cp .;mongo-java-driver-3.4.1.jar getAssets.java getAssets.java:46: error: no suitable method found for aggregate(List) AggregateIterable aggr = coll.aggregate(asList(unwind, match)); ^ method MongoCollection.aggregate(List,Class) is not applicable (cannot instantiate from arguments because actual and formal argument lists differ in length) method MongoCollection.aggregate(List) is not applicable (actual argument List cannot be converted to List by method invocation conversion) where TResult is a type-variable: TResult extends Object declared in method aggregate(List,Class) 1 error 

注意:使用mongo 3.4.1

新代码:

 import com.mongodb.*; import com.mongodb.Block; import com.mongodb.client.AggregateIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import org.bson.types.ObjectId; import static java.util.Arrays; import static java.util.Arrays.asList; public class getAssets{ public static void main( String args[] ){ Block printBlock = new Block() { @Override public void apply(final Document document) { System.out.println(document.toJson()); } }; MongoClient mongoClient = new MongoClient("localhost",27017); MongoDatabase database = mongoClient.getDatabase("test"); System.out.println("Connect to database successfully"); MongoCollection coll = database.getCollection("asset"); Document unwind = new Document("$unwind", "$dp.asset"); Document match = new Document("$match", new Document("$dp.asset.status", new Document("$in", new String[]{"ACTIVE", "LIMITEDUSE", "OPERATING"})). append("$dp.asset.siteid", new Document("$in", new String[]{"BEDFORD"}))); AggregateIterable aggr = coll.aggregate(Arrays.asList(unwind, match)); aggr.forEach(printBlock); mongoClient.close(); } } 

编译没有错误但运行时错误

 Exception in thread "main" java.lang.NoSuchMethodError: org.bson.BsonDocument.clone()Lorg/bson/BsonDocument; at com.mongodb.connection.ClientMetadataHelper.createClientMetadataDocument(ClientMetadataHelper.java:146) at com.mongodb.connection.ClientMetadataHelper.createClientMetadataDocument(ClientMetadataHelper.java:136) at com.mongodb.connection.InternalStreamConnectionFactory.(InternalStreamConnectionFactory.java:41) at com.mongodb.connection.DefaultClusterableServerFactory.create(DefaultClusterableServerFactory.java:68) at com.mongodb.connection.BaseCluster.createServer(BaseCluster.java:360) at com.mongodb.connection.SingleServerCluster.(SingleServerCluster.java:54) at com.mongodb.connection.DefaultClusterFactory.create(DefaultClusterFactory.java:114) at com.mongodb.Mongo.createCluster(Mongo.java:744) at com.mongodb.Mongo.createCluster(Mongo.java:728) at com.mongodb.Mongo.(Mongo.java:293) at com.mongodb.Mongo.(Mongo.java:288) at com.mongodb.Mongo.(Mongo.java:284) at com.mongodb.MongoClient.(MongoClient.java:179) at com.mongodb.MongoClient.(MongoClient.java:156) at com.mongodb.MongoClient.(MongoClient.java:146) at getAssets.main(getAssets.java:20) 

对我来说,我通过使用mongodb驱动程序解决了这个错误3.6.4在您的依赖项中添加它(例如gradle)

 dependencies { implementation 'org.mongodb:mongodb-driver:3.6.4' }