2016-01-06 8 views
7

Così stavo sviluppando un progetto che utilizza mongo e ho ottenuto un errore dopo l'esecuzione del codice: db.usercollection.insert({ "username" : "testuser1", "email" : "[email protected]" })MongoDB errore: Impossibile utilizzare ReadMode 'comandi', degradante alla modalità 'Legacy'

L'errore visualizzato era:

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 }" 
     } }) 

Il db.version() è 3.0.7 ed ho installato la versione guscio MongoDB è 3.2.0

Come dovrei risolvere questo problema?

saluti, Daryll

+0

riavviare la shell mongo ed emettere il comando db.getMongo(). ForceReadMode ("legacy") o db.getMongo(). ForceReadMode ("compatibility"). – harshavmb

+3

Le versioni di shell e DB probabilmente non sono le stesse. http://stackoverflow.com/questions/24916320/cannot-use-commands-write-mode-error-degrading-to-compatibility-mode – Buzut

risposta

2

Ho appena riavviare il processo mongod invece e lavora per me.

0

Non so se sei vittima di avere replica set e perso Primary db oppure no.
In tal caso, ricreare quello primario o utilizzare questo comando prima del tuo inserimento.

db.getMongo().setSlaveOk(); 
-1

Impossibile utilizzare 'commands' readMode, degradante per legacy mode,

rs-ds017231:PRIMARY> show dbs 

rs-ds017231:PRIMARY> db 

rs-ds017231:PRIMARY>db.collection_name.insert({}) 

funziona per me!

0

Ampliando @ commento di Buzut sopra ...

Ho appena incontrato questo stesso errore. Per me, il problema era una differenza di versione tra il client in esecuzione a livello locale e la versione di mongo db in esecuzione nel cloud.

Per verificare se questo è il problema, eseguire mongo --version localmente e prendere nota del numero di versione. Quindi connettiti alla tua shell mongo db ed esegui db.version() per verificare la versione lì.

Se c'è una grande differenza in questi numeri (come un client versione 3 e una versione 2 db), è probabile che tu debba passare alla versione client più vicina alla tua versione db.

Per fare questo, andare al centro di download Mongo: https://www.mongodb.com/download-center#production

Selezionare la piattaforma, poi clicca su 'All Versione binari', e cercare un download che corrisponde al tuo db ospitato.

Questo scaricherà un file compresso che sarà necessario decomprimere. E dentro ci sarà una cartella. Basta usare il percorso per l'eseguibile/bin/mongo (all'interno di quella cartella) per eseguire i comandi mongo. Per esempio:

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

Speranza che aiuta.

2
db.getCollection(collectionName).count({}); 
db.getCollection(collectionName).find({}); 

Funziona! forse mongo ha bisogno di altre operazioni.

Problemi correlati