我正在尝试使用 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/