sql >> Database >  >> NoSQL >> MongoDB

Hoe een uitzondering te voorkomen Voortijdig het einde van de stream bereikt met behulp van mongoDB Java-stuurprogramma 3.4+ of 3.6+? (tijdens het inbrengen)

Optie #1

De fout is opgelost door het formaat van de verbinding (met behulp van de parameters maxIdleTimeMS , ssl en 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");

Of u kunt de inloggegevens programmatisch configureren (met behulp van java-stuurprogramma 3.6+ versies):

admin - is de database waarin de gebruikers zijn gedefinieerd in Atlas;

user - is de gebruikersnaam;

mypassword - is het wachtwoord;

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

Optie #2

Bovendien kan de fout worden opgelost door mongodb.MongoClient.connect . aan te roepen eenmaal, niet elk verzoek. Probeer uw code om verbinding te maken één keer te herstructureren in plaats van elke keer tijdens het invoegen van een specifiek document. In dit geval kunt u eventuele extra parameters van optie #1 vermijden.

Precies genoeg:

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

Speciale dank voor hulp mongoDB-ondersteuning .



  1. Mongo DB aggregatie array grootte groter dan match

  2. MongoDB $ regex-query en mogelijke exploits

  3. Digitale transformatie is een datareis van edge naar Insight

  4. ClassCastException tijdens JNDI-lookup voor MongoDB, binnen WAB, met Liberty