首页 > 解决方案 > 尝试将数据插入 Atlast 服务器上的集合时,命令失败并出现错误 8000 (AtlasError)

问题描述

我正在使用 mongoDB Atlas 创建一个 mongodb。一切似乎都很好。当我运行程序时,服务器连接成功。但是,当我尝试将数据插入集合时,它给了我错误“命令失败,错误 8000 (AtlasError)”。我在另一篇文章中读到,说我必须使用不同的数据库名称,但这仍然不起作用。我对此很陌生,所以任何帮助都将不胜感激。这是我的代码

public class DbController2<DBObject> {
MongoClientURI uri;
MongoClient mongoClient;
MongoDatabase database;
MongoCollection<Document> collection;

public DbController2() {
    uri = new MongoClientURI(
            "mongodb://dbEfish:PASSWORD@cluster0-shard-00-00-klemt.mongodb.net:27017,cluster0-shard-00-01-klemt.mongodb.net:27017,cluster0-shard-00-02-klemt.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true");

    mongoClient = new MongoClient(uri);
    database = mongoClient.getDatabase("eFishDB");
    collection = database.getCollection("controlVar");
}

public Document toDBObject(String key, String[] dataPoints) {
    return  new Document("_id", key)
            .append("Water Level", dataPoints[0])
            .append("Water Temperature", dataPoints[1])
            .append("pH Level", dataPoints[2])
            .append("Nitrate Level", dataPoints[3])
            .append("Oxygen Level", dataPoints[4])
            .append("Ammonia Level", dataPoints[5])
            .append("Light Intensity", dataPoints[6])
            .append("Air Temperature", dataPoints[7]);
}

public void insert(String key, String[] dataPoints) {
    //((DBCollection) collection).insert((com.mongodb.DBObject[]) this.toDBObject(key, dataPoints));
    collection.insertOne(this.toDBObject(key, dataPoints));
}

}

这是错误日志: INFO: Closed connection [connectionId{localValue:4}] to cluster0-shard-00-00-klemt.mongodb.net:27017 因为此连接引发了套接字异常。线程“AWT-EventQueue-0”com.mongodb.MongoSecurityException 中的异常:在 com 处验证 MongoCredential{mechanism=SCRAM-SHA-1,userName='dbEfish',source='admin',password=,mechanismProperties={}} 的异常.mongodb.internal.connection.SaslAuthenticator.wrapException(SaslAuthenticator.java:173) 在 com.mongodb.internal.connection.SaslAuthenticator.access$300(SaslAuthenticator.java:40) 在 com.mongodb.internal.connection.SaslAuthenticator$1.run (SaslAuthenticator.java:70) 在 com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:47) 在 com.mongodb.internal.connection.SaslAuthenticator。pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(未知来源)原因:com.mongodb.MongoCommandException:命令失败,错误 8000(AtlasError):'bad auth Authentication failed。' 在服务器 cluster0-shard-00-00-klemt.mongodb.net:27017 上。com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException( ProtocolHelper.java:187)在 com.mongodb.internal.connection.InternalStreamConnection。

标签: javaeclipsemongodb

解决方案


如果 MOngoDb atlas 云凭证和云详细信息 [IP/URL] 正确,则这是您选择用于连接应用程序的驱动程序的问题。我遇到了同样的问题,根本原因是应用程序和 mongodb 连接字符串中的驱动程序版本不匹配。

mongodb: //testatlasCloud:sedXhdsghgK24RGJxF@firstvm-shard-00-00-n6ojx.mongodb.net:27017,firstvm-shard-00-01-n6ojx.mongodb.net:27017,firstvm-shard-00-02-n6ojx。 mongodb.net:27017/firstvmDB?ssl=true&replicaSet=firstvm-shard-0&authSource=admin&retryWrites=true&w=majority");

mongodb+srv:// 对我不起作用,因为我使用的是旧的 mongo 驱动程序版本。


推荐阅读