Maison > développement back-end > Golang > Comment résoudre l'erreur « Aucun mode de problème d'écriture nommé « majorité » trouvé » dans MongoDB ?

Comment résoudre l'erreur « Aucun mode de problème d'écriture nommé « majorité » trouvé » dans MongoDB ?

Barbara Streisand
Libérer: 2024-12-04 21:55:14
original
598 Les gens l'ont consulté

How to Resolve

Erreur de problème d'écriture dans MongoDB

Lors de l'insertion de données dans MongoDB en utilisant le problème d'écriture majoritaire, il est possible de rencontrer l'erreur :

No write concern mode named 'majority`' found in replica set configuration
Copier après la connexion

Cette erreur se produit car la configuration du jeu de réplicas n'inclut pas de mode de préoccupation en écriture nommé majorité.

Résolution de l'erreur

Pour résoudre cette erreur, ajoutez le mode de préoccupation d'écriture majoritaire à la configuration du jeu de réplicas. Le problème d'écriture majoritaire garantit que les données sont écrites sur une majorité des membres du jeu de réplicas avant d'accuser réception de l'écriture.

Exemple de chaîne de connexion

La chaîne de connexion suivante inclut la majorité écrire le souci :

mongodb+srv://user:[email protected]/DBname?retryWrites=true&w=majority
Copier après la connexion

Modifier la connexion à la base de données

Mettre à jour la base de données fonction de configuration de connexion pour ajouter le problème d'écriture majoritaire :

import (
    "context"
    "time"
    
    "go.mongodb.org/mongo-driver/mongo"
)

var DbConn *mongo.Client

func SetupDB(conn_str string) {
    var err error
    opts := options.Client().ApplyURI(conn_str).SetWriteConcern(options.Majority())
    DbConn, err = mongo.NewClient(opts)
    if err != nil {
        log.Fatal(err)
    }
    ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
    err = DbConn.Connect(ctx)
    if err != nil {
        log.Fatal(err)
    }
}
Copier après la connexion

Demande de mise à jour

Assurez-vous que la requête InsertOne utilise la connexion à la base de données mise à jour :

ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()

result, err := DbConn.Database(dbName).Collection(collectionName).InsertOne(ctx, b)
Copier après la connexion

Après avoir effectué ces modifications, réexécutez l'application et l'erreur devrait être résolue.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal