我只是和mongo shell玩,结果得到了Cannot use commands write mode, degrading to compatibility mode分.

我连接到远程mongo服务器(mongolab),并试图通过我的简单脚本将新记录插入到集合中:

// script.js
db = connect(host + ":" + port +"/" + dbName);
db.auth(username, password);

db.test2.insert({ item: "card", qty: 15 });

我以mongo script.js的速度运行脚本,得到:

MongoDB shell version: 2.6.3
connecting to: test
connecting to: my.mongolab.com:port/DBname
Cannot use commands write mode, degrading to compatibility mode

怎么了?此外,当我通过mongo my.mongolab.com:port/DBname -u <dbuser> -p <dbpassword>连接后执行类似的查询时,一切都正常.

推荐答案

您使用的shell比它所通信的服务器更新.

您可以通过db.version()从shell中判断服务器版本,以判断您使用的shell版本version()

从2.6开始,mongod服务器开始使用新的写入命令,这些命令不同于以前使用的插入/更新/删除操作代码(这些都在MongoDB Wire Protocol中描述).

这是一个无害的"信息性"警告.不过,最好使用与服务器相同的shell版本,以避免对这些事情产生疑问.

Mongodb相关问答推荐

如何在Mongodb Mongoose Nodejs中提取不等于一组值的字段

减法聚合Mongo文档Golang

MongoDB查询优化

MongoDB - 来自先前匹配文档的聚合匹配字段

Spring Boot 升级后未映射 Mongo 模板结果

定期自动轮换 MongoDb 集合

如何在 go mongo-driver 中为 options.FindOne() 设置限制

查询有关 Go 项目中对象数组的 MongoDb 集合

Mongoose 返回包含属性内任何位置的值的所有文档

MongoDB 存储大量指标/分析数据的方法

使用 mongodb 时是否需要规范化数据库?

mongodb 中的 --bindip 配置选项有什么作用?

Node.js 和 Passport 对象没有方法 validPassword

从 mongodb 中的副本配置重新开始

$elemMatch 的 MongoDB 索引

MongoDb 数据库与集合

MongoDB 中的多个 $inc 更新

如何在 MongoDB 中删除此弃用警告,为什么会这样?

在 mongoose 中使用 UUID 进行 ObjectID 引用

show dbs 给出Not Authorized to execute command错误