MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak uniknąć wyjątku Przedwcześnie osiągnął koniec strumienia przy użyciu sterownika Java mongoDB 3.4+ lub 3.6+? (podczas wkładania)

Opcja nr 1

Błąd został rozwiązany przez format połączenia (przy użyciu parametrów maxIdleTimeMS , ssl i 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");

Lub możesz skonfigurować dane uwierzytelniające programowo (za pomocą sterownika java 3.6+ wersje):

admin - to baza danych, w której zdefiniowani są użytkownicy w Atlasie;

user - to nazwa użytkownika;

mypassword - to hasło;

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);

Opcja nr 2

Co więcej, błąd można rozwiązać, wywołując mongodb.MongoClient.connect raz, a nie każdą prośbę. Spróbuj zmienić strukturę kodu, aby wywołać połączenie raz, a nie za każdym razem podczas wstawiania określonego dokumentu. W takim przypadku możesz uniknąć dodatkowych parametrów z opcji nr 1.

Wystarczy:

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

Specjalne podziękowania za pomoc obsługa MongoDB .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy można używać identyfikatora obiektu Mongo jako unikalnego identyfikatora? Jeśli tak, jak mogę przekonwertować go na ciąg i wyszukać go według ciągu?

  2. MongoDB Count() a agregacja

  3. Jak wykonać kopię zapasową i przywrócić ClusterControl

  4. Jak zliczyć wszystkie dokumenty w kolekcji i użyć cd w kontrolerze, z MongoDB i Express.js?

  5. Zwiększanie limitu pamięci dla zadań agregujących mongodb