2016-01-06 31 views
7

所以我是用蒙戈開發一個項目,我得到了一個錯誤執行的代碼後:顯示 db.usercollection.insert({ "username" : "testuser1", "email" : "[email protected]" })MongoDB的錯誤:不能使用「命令」 readMode,降級爲「傳統」模式

錯誤是:

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

的db.version()是3.0.7,我安裝了MongoDB的外殼版本是3.2.0

我應該如何解決這個問題?

問候, Daryll

+0

重新啓動mongo shell併發出db.getMongo()。forceReadMode(「legacy」)或 db.getMongo()。forceReadMode(「compatibility」)命令。 – harshavmb

+3

您的shell和數據庫版本可能不一樣。 http://stackoverflow.com/questions/24916320/cannot-use-commands-write-mode-error-degrading-to-compatibility-mode – Buzut

回答

2

我剛剛重啓mongod的過程,而不是和我的作品。

0

我不知道你是否是replica set的受害者,並且是否丟失Primary db
如果是這樣,請在插入之前重新創建Primary或​​使用此命令。

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

不能使用'commands' readMode,降級爲legacy mode

rs-ds017231:PRIMARY> show dbs 

rs-ds017231:PRIMARY> db 

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

這對我的作品!

0

擴大對@以上Buzut的評論...

我只是碰到了同樣的錯誤。對我而言,問題在於本地運行的客戶端與運行在雲中的mongo數據庫的版本不同。

要驗證這是否是您的問題,請在本地運行mongo --version並記下版本號。然後連接到你的mongo db shell並運行db.version()來檢查那裏的版本。

如果這些數字存在重大差異(如版本3客戶機和版本2數據庫),則可能需要切換到更接近數據庫版本的客戶機版本。

要做到這一點,去蒙戈下載中心:https://www.mongodb.com/download-center#production

選擇您的平臺,然後單擊「所有版本的二進制文件」,並尋找一個下載軟件,託管數據庫匹配。

這將下載一個需要解壓縮的壓縮文件。裏面會有一個文件夾。只需使用/ bin/mongo可執行文件(在該文件夾內)的路徑即可執行您的mongo命令。例如:

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

希望有所幫助。

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

它的工作原理!也許mongo需要其他操作。