java - 为什么会出现以下错误 : Can't find a codec for class com. mongodb.client.model.geojson.Polygon

标签 java mongodb geospatial

我正在尝试使用 MongoDB 的 com.mongodb.client.model.geojson.Polygon 类和 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);

这里是错误:

Exception in thread "main" org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class com.mongodb.client.model.geojson.Polygon.

最佳答案

在您的设置中,您需要指定编解码器注册表,您目前缺少 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);

普通司机

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

关于java - 为什么会出现以下错误 : Can't find a codec for class com. mongodb.client.model.geojson.Polygon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34052372/

相关文章:

r - 如何将数据帧中的数据点添加到斯洛伐克行政区域的多边形 map ?

mysql - 带有 Entity Framework 的空间 MySQL

geospatial - 尽管存在数据,但 Geomesa 导出不返回任何结果

Java ResourceBundle 更改为默认语言

java - spring boot 无法连接非主数据库

mongodb - 如何将 Mongodb cursorTimeoutMillis 设置为 NoT 超时?

javascript - 如何将 mongoDB 连接到 angular2 应用程序?

javascript - 过滤 OrionJS 中某个角色可以查看的文档

java - 在我的示例中如何模拟具有静态字段的类?

java - 如何编写基于3个变量的switch语句?