繁体   English   中英

无法插入到新创建的mongolab数据库中

[英]Can't insert into newly created mongolab db

我在将文档插入mongoLab实例时遇到问题。

我正在使用以下命令连接到实例:

MongoClient client = new MongoClient(new MongoClientURI(uri));

uri看起来像这样:

mongodb://heroku_app1234:random_password@ds029017.mongolab.com:29017/heroku_app1234

用户heroku_app1234的状态为readOnlyfalse

并像这样插入我的文档:

Jongo jongo = new Jongo(client.getDB("myDb"));
MongoCollection collection = jongo.getCollection("myCollection");
collection.save(someBean);
client.close();

并且服务器崩溃,并带有以下异常:

Caused by: com.mongodb.WriteConcernException: { "serverUsed" : "ds029017.mongolab.com:29017" , "err" : "not authorized for insert on myDb.myCollection" , "code" : 16544 , "n" : 0 , "lastOp" : { "$ts" : 0 , "$inc" : 0} , "connectionId" : 21382 , "ok" : 1.0} 

看起来您正在连接到一个数据库(heroku_app1234)并对其进行身份验证,然后又切换到另一个数据库(myDB)。 结果,您得到的错误是not authorized for insert on myDb.myCollection

当您获取数据库并将其传递给Jongo()构造函数时,应确保获取与URI中使用的数据库相同的数据库。 看起来您正在使用Java。 如果是这样,对您的代码进行的这种调整可能对您有用:

MongoClientUri uri = new MongoClientUri("mongodb://heroku_app1234:random_password@ds029017.mongolab.com:29017/heroku_app1234");
MongoClient client = new MongoClient(uri);
Jongo jongo = new Jongo(client.getDB(uri.getDatabase()));
MongoCollection collection = jongo.getCollection("myCollection");
collection.save(someBean);
client.close();

我们的语言中心提供了一些基本的连接示例,其中包括一个Java实例,您可以随时从中获取。

// Standard URI format: mongodb://[dbuser:dbpassword@]host:port/dbname
MongoClientURI uri  = new MongoClientURI("mongodb://user:pass@host:port/db"); 
MongoClient client = new MongoClient(uri);
DB db = client.getDB(uri.getDatabase());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM