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
db.getCollection(collectionName).count({});
db.getCollection(collectionName).find({});
Ça marche! Peut-être que le mongo a besoin d'une autre opération.
Je viens de redémarrer le processus Mongod à la place et travaille pour moi.
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.
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();