そのため、mongoを使用してプロジェクトを開発していましたが、コードの実行後にエラーが発生しました:db.usercollection.insert({ "username" : "testuser1", "email" : "[email protected]" })
表示されたエラーは次のとおりです。
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です。
これをどのように修正すればよいですか?
よろしく、ダリル
db.getCollection(collectionName).count({});
db.getCollection(collectionName).find({});
できます!多分mongoは他の操作が必要です。
代わりにmongodプロセスを再起動するだけで、うまくいきます。
上記の@Buzutのコメントを拡張しています...
私はちょうどこれと同じエラーに遭遇しました。私にとっての問題は、ローカルで実行されているクライアントとクラウドで実行されているmongodbのバージョンの違いでした。
それが問題かどうかを確認するには、ローカルで_mongo --version
_を実行し、バージョン番号をメモします。次に、mongo db Shellに接続し、db.version()
を実行してそこでバージョンを確認します。
これらの数値に大きな違いがある場合(バージョン3クライアントとバージョン2 dbなど)、dbバージョンに近いクライアントバージョンに切り替える必要がある可能性があります。
これを行うには、Mongoダウンロードセンターにアクセスします: 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>
_
お役に立てば幸いです。
あなたがreplica set
を持っていて、Primary db
を失った犠牲者であるかどうかはわかりません。
その場合は、プライマリを再作成するか、挿入する前にこのコマンドを使用してください。
db.getMongo().setSlaveOk();