MongoDB错误:无法使用'命令' readMode,降级为' legacy'模式

时间:2016-01-06 13:11:25

标签: mongodb mongo-shell

所以我使用mongo开发了一个项目,执行代码后出错了: db.usercollection.insert({ "username" : "testuser1", "email" : "testuser1@testdomain.com" })

显示的错误是:

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: \"testuser1@testdomain.com\" } ], ordered: true }"
        } })

db.version()是3.0.7,我安装的MongoDB shell版本是3.2.0

我该如何解决这个问题?

此致 Daryll

5 个答案:

答案 0 :(得分:3)

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

有效!也许mongo需要其他操作。

答案 1 :(得分:2)

我只是重新启动mongod进程并为我工作。

答案 2 :(得分:1)

扩展@ Buzut上面的评论...

我刚遇到同样的错误。对我来说,问题是本地运行的客户端与云中运行的mongo db版本之间的版本差异。

要验证这是否是您的问题,请在本地运行mongo --version并记下版本号。然后连接到您的mongo db shell并运行db.version()以检查那里的版本。

如果这些数字存在重大差异(例如版本3客户端和版本2数据库),您可能需要切换到更接近数据库版本的客户端版本。

为此,请转到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>

希望有所帮助。

答案 3 :(得分:0)

我不知道你是否是replica set并且遗失Primary db的受害者。
如果是这样,请重新插入Primary,或在插入之前使用此命令。

db.getMongo().setSlaveOk();

答案 4 :(得分:-2)

无法使用'commands' readMode,降级为legacy mode

rs-ds017231:PRIMARY> show dbs

rs-ds017231:PRIMARY> db

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

对我有用!