web-dev-qa-db-fra.com

Erreur MongoDB: impossible d'utiliser readmode 'commandes', se dégradant en mode 'hérité'

Donc, je développais un projet en utilisant mongo et j'ai eu une erreur après avoir exécuté le code: db.usercollection.insert({ "username" : "testuser1", "email" : "[email protected]" })

L'erreur affichée était:

Cannot use 'commands' readMode, degrading to 'legacy' mode WriteResult({
        "writeError" : {
                "code" : 13,
                "errmsg" : "not authorized on watersheds to execute command { insert: \"usercollection\", documents: [ { _id: ObjectId('568d0eda45d472b121116bef'), username: \"testuser1\", email: \"[email protected]\" } ], ordered: true }"
        } })

Le db.version () est 3.0.7 et j'ai installé la version de MongoDB Shell est 3.2.0

Comment dois-je résoudre ce problème?

Cordialement, Daryll

7
dgnebres
db.getCollection(collectionName).count({});
db.getCollection(collectionName).find({});

Ça marche! Peut-être que le mongo a besoin d'une autre opération.

3
Geraint

Je viens de redémarrer le processus Mongod à la place et travaille pour moi.

2
harryssuperman

Développer le commentaire de @ Buzut ci-dessus ...

Je viens de rencontrer cette même erreur. Pour moi, le problème était une différence de version entre le client s'exécutant localement et la version de la base de données mongo exécutée dans le cloud. 

Pour vérifier si c'est votre problème, exécutez mongo --version localement et notez le numéro de version. Ensuite, connectez-vous à votre shell mongo db et exécutez db.version() pour vérifier la version.

S'il existe une différence majeure entre ces chiffres (comme un client version 3 et une base de données version 2), vous devrez probablement passer à une version client plus proche de votre version de base de données. 

Pour ce faire, accédez au centre de téléchargement Mongo: https://www.mongodb.com/download-center#production

Sélectionnez votre plate-forme, puis cliquez sur "Toutes les versions binaires" et recherchez un téléchargement correspondant à votre base de données hébergée. 

Cela téléchargera un fichier compressé que vous devrez décompresser. Et à l'intérieur, il y aura un dossier. Utilisez simplement le chemin d'accès à l'exécutable/bin/mongo (à l'intérieur de ce dossier) pour exécuter vos commandes mongo. Par exemple:

/path/to/downloads/mongodb-osx-x86_64-2.6.9/bin/mongo <whatever mongo commands you want>

J'espère que cela pourra aider.

1
Malcolm Diggs

Je ne sais pas si vous êtes victime d'avoir replica set et perdu Primary db ou non.
Si oui, recréez le primaire ou utilisez cette commande avant votre insertion.

db.getMongo().setSlaveOk();
0
Amir