sql >> データベース >  >> NoSQL >> MongoDB

Javaドライバーを介してAtlasM0(無料利用枠)クラスターに正しく接続するにはどうすればよいですか?

    解決しました!それで、私がしたこと:

    1. driver3.6を介してティアクラスターに接続しようとしました と書いた

      mongodb + srv:// user:@ cluster0-ox90k.mongodb.net / test?retryWrites =true

    常にエラーが発生します: Connection strings must start with 'mongodb://'

    1. さて、スニペット+srvを削除しました 同じように書いた

      mongodb:// user:@ cluster0-ox90k.mongodb.net / test?retryWrites =true

    もう一度エラーが発生します:

    com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=cluster0-ox90k.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: cluster0-ox90k.mongodb.net}, caused by {java.net.UnknownHostException: cluster0-ox90k.mongodb.net}}]
    

    だから、私はdriver3.4以前を介して書いた のように

    mongodb://user:<PASSWORD>@cluster0-shard-00-00-ox90k.mongodb.net:27017,cluster0-shard-00-01-ox90k.mongodb.net:27017,cluster0-shard-00-02-ox90k.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true
    

    そしてついに解決しました。

    注:この接続文字列は、Javaドライバーを「3.4以降」に設定することにより、Atlas管理コンソールから取得できます。これにより、接続文字列を自分で考え出す必要がなくなります。

    更新: ドライバーを使用する場合3.7+ 、フォーマット接続の代わりに書く必要があります(そして上記の私の問題を避けるために)

    MongoClientURI uri = new MongoClientURI("mongodb+srv://admin:[email protected]/test?retryWrites=true");
    MongoClient mongoClient = new MongoClient(uri);
    

    MongoClients.create()を使用する別のバリ​​アント (3.7リリース以降)、およびここで説明されているように:

       MongoClient mongoClient = MongoClients.create("mongodb+srv://admin:[email protected]/test?retryWrites=true");
    

    注: パスワードはmongodb://user:<mypassword>@...のように書く必要はありません 、

    mongodb://user:[email protected]の形式で

    中かっこなし<>



    1. 20Hadoop2.xとHadoop3.xの顕著な違い

    2. LRUの有効期限が切れたメモリ内キャッシュ

    3. $ first in mongodb

    4. SpringDataMongoDBトランザクション