【问题标题】:Can't insert into newly created mongolab db无法插入新创建的 mongolab db
【发布时间】:2014-04-27 10:19:29
【问题描述】:

我在将文档插入 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} 

【问题讨论】:

    标签: java mongodb heroku mlab


    【解决方案1】:

    看起来您正在连接并验证一个数据库 (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();
    

    我们的Language Center 中有一些基本的连接示例,包括一个用于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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 1970-01-01
      相关资源
      最近更新 更多