为什么会出现以下错误:找不到类 com.mongodb.client.model.geojson.Polygon 的编解码器

Rij*_*hwa 6 java geospatial mongodb

com.mongodb.client.model.geojson.Polygon我正在尝试使用 MongoDB 的类和类进行地理空间查询com.mongodb.client.model.geojson.Position。客户端代码在其自己的boundingBox对象中填充四个双角。

这是代码片段:

Polygon polygon = new Polygon(Arrays.asList(new Position(boundingBox.getRightLongitude(),boundingBox.getTopLatitude()), 
                new Position(boundingBox.getLeftLongitude(), boundingBox.getTopLatitude()), 
                new Position(boundingBox.getLeftLongitude(), boundingBox.getBottomLatitude()), 
                new Position(boundingBox.getRightLongitude(), boundingBox.getBottomLatitude()),
                new Position(boundingBox.getRightLongitude(), boundingBox.getTopLatitude())));
        //Document filter = new Document("coordinates",geoWithin("coordinates", polygon));


    Block<Document> printBlock = new Block<Document>() {
         @Override
         public void apply(final Document document) {
             System.out.println(document.toJson());
         }
    };
    database.getCollection("roads").find(geoWithin("coordinates",polygon)).forEach(printBlock);
Run Code Online (Sandbox Code Playgroud)

这是错误:

Exception in thread "main" org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class com.mongodb.client.model.geojson.Polygon.
Run Code Online (Sandbox Code Playgroud)

Pat*_*uts 0

在您的设置中,您需要指定编解码器注册表,您当前缺少GeoJsonCodecProvider()使用com.mongodb.MongoClient.getDefaultCodecRegistry()应该可以很好

对于异步驱动程序

MongoClientSettings settings = MongoClientSettings.builder().readPreference(readPreference)
    .codecRegistry(com.mongodb.MongoClient.getDefaultCodecRegistry()).socketSettings(sockSettings)
    .connectionPoolSettings(connPoolSettings).credentialList(credentials))
    .clusterSettings(clusterSettings).build();
LOG.info("MongoClientSettings: {}, {}, {}, {}", sockSettings, connPoolSettings, clusterSettings, credentials);
MongoClient mgc = MongoClients.create(settings);
Run Code Online (Sandbox Code Playgroud)

对于普通驾驶员来说

MongoClientOptions settings = MongoClientOptions.builder().readPreference(readPreference)
    .codecRegistry(com.mongodb.MongoClient.getDefaultCodecRegistry()).build();
MongoClient mgc= new MongoClient(servers,credentials,settings);
Run Code Online (Sandbox Code Playgroud)