MongoDB原始java连接
我正在尝试创建一个通用的mongo连接组件,该组件将用于不同的mongo DB实例。我设法用一些代码使它工作:MongoDB原始java连接,java,mongodb,mongodb-authentication,Java,Mongodb,Mongodb Authentication,我正在尝试创建一个通用的mongo连接组件,该组件将用于不同的mongo DB实例。我设法用一些代码使它工作: 我不明白为什么它需要在两个位置指定数据库:“myDb”,一次在凭证中,一次在它执行getDatabase时。除此之外,在我的设置中,我需要在createCredential:“admin”上指定一个不同的DB才能工作。为什么凭证数据库与我将运行查询的数据库不同?深入检查代码时,您会发现以下令人信服的原因 这是所有验证者都失败的地方 private void authenticateAl
我不明白为什么它需要在两个位置指定数据库:
“myDb”
,一次在凭证中,一次在它执行getDatabase
时。除此之外,在我的设置中,我需要在createCredential
:“admin”上指定一个不同的DB才能工作。为什么凭证数据库与我将运行查询的数据库不同?深入检查代码时,您会发现以下令人信服的原因
这是所有验证者都失败的地方
private void authenticateAll(final InternalConnection internalConnection, final ConnectionDescription connectionDescription) {
if (connectionDescription.getServerType() != ServerType.REPLICA_SET_ARBITER) {
for (final Authenticator cur : authenticators) {
cur.authenticate(internalConnection, connectionDescription);
}
}
}
身份验证程序
包含凭据列表。有四种实现
executeCommand(getCredential().getSource(), authCommand, connection);
一次,当它执行getDatabase时-为什么
这完全不同。它返回
MongoDatabase
对象,该对象包含读取、写入关注点、集合列表、创建视图、创建集合的选项
在MongoDB身份验证上查看这些:和。
executeCommand(getCredential().getSource(), authCommand, connection);