簡體   English   中英

使用mondodb在Java中找不到類com.mongodb.BasicDBObject錯誤的編解碼器

[英]Can't find a codec for class com.mongodb.BasicDBObject error in Java using mondodb

我正在使用mongodb的異步驅動程序3.0.2( http://mongodb.github.io/mongo-java-driver/3.0/driver-async/ )和Java。

我試圖找到一個地方最近的10個文件。 我將在mongodb shell中使用以下查詢來完成此任務:

db.locations.find( { loc : 
                  { $geoWithin : 
                    { $centerSphere : 
                       [ [ 40 , -40 ] , 10 / 3963.2 ] 
                } } } ).limit(10); 

我需要在java中運行它,因此創建了下面的查詢,但是當我運行它時,我得到了這個異常:

org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class com.mongodb.BasicDBObject.

碼:

BasicDBObject geometery = new BasicDBObject("$centerSphere", asList(
                        asList(40, -40), 10 / 3963.2));
                BasicDBObject operator = new BasicDBObject("$geoWithin", geometery);
                BasicDBObject query = new BasicDBObject("loc", operator);

                Block<Document> postsBlock = new Block<Document>() {
                    @Override
                    public void apply(final Document document) {
                        System.out.println(document.toJson());
                    }
                };
                SingleResultCallback<Void> postsCallback = new SingleResultCallback<Void>() {
                    @Override
                    public void onResult(final Void result, final Throwable t) {
                        System.out.println("Operation Finished!");
                    }
                };

                try {
                    collection.find(query).limit(10).forEach(postsBlock, postsCallback);
                } catch (Exception exc) {
                    exc.printStackTrace();
                }

在你的連接中你需要指定編解碼器注冊表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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM