MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara menghindari pengecualian Prematur mencapai akhir aliran menggunakan driver mongoDB Java 3.4+ atau 3.6+? (selama penyisipan)

Opsi #1

Kesalahan diselesaikan dengan format koneksi (menggunakan parameter maxIdleTimeMS , ssl dan authSource ):

MongoClient mongoClient = MongoClients.create("mongodb://user:[email protected]: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&maxIdleTimeMS=5000");

Atau Anda dapat mengonfigurasi kredensial secara terprogram (menggunakan driver java 3.6+ versi):

admin - adalah database tempat pengguna didefinisikan di Atlas;

user - adalah nama pengguna;

mypassword - adalah kata sandinya;

MongoCredential credential = MongoCredential.createCredential("user", "admin", "mypassword".toCharArray());
        MongoClientSettings settings = MongoClientSettings.builder()
                .credential(credential)
                .retryWrites(true)
                .applyToConnectionPoolSettings(builder ->
                        builder.maxConnectionIdleTime(5000, TimeUnit.MILLISECONDS))
                .applyToSslSettings(builder -> builder.enabled(true))
                .applyToClusterSettings(builder -> {
                    builder.hosts(Arrays.asList(
                            new ServerAddress("cluster0-shard-00-00-ox90k.mongodb.net", 27017),
                            new ServerAddress("cluster0-shard-00-01-ox90k.mongodb.net", 27017),
                            new ServerAddress("cluster0-shard-00-02-ox90k.mongodb.net", 27017)
                    ));
                    builder.requiredReplicaSetName("Cluster0-shard-0");
                })
                .build();

        MongoClient mongoClient = MongoClients.create(settings);

Opsi #2

Selain itu, kesalahan dapat diselesaikan dengan memanggil mongodb.MongoClient.connect sekali, tidak setiap permintaan. Cobalah untuk merestrukturisasi kode Anda untuk memanggil koneksi sekali alih-alih setiap kali selama penyisipan dokumen tertentu. Dalam hal ini, Anda dapat menghindari parameter tambahan apa pun dari opsi #1.

Cukup:

mongodb+srv://admin:[email protected]/test?retryWrites=true&w=majority

Terima kasih khusus atas bantuannya dukungan mongoDB .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. hapus dokumen yang disematkan di mongoid

  2. Cara $lookup dengan pipeline &membiarkan parameter di C# (MongoDB.Driver 2.7.2)

  3. Bagaimana cara mengubah daftar casbah mongodb ke json di scala / play

  4. Filter hasil menurut Nilai Bidang Entri Array Terakhir

  5. Merancang hubungan Banyak-ke-Banyak di MongoDB (bukan tabel relasional)