From d569a93ad6dcb2f925b70dcb17941b4b6fe27724 Mon Sep 17 00:00:00 2001 From: Kevin-Gallagher <731188721@qq.com> Date: Thu, 24 Mar 2022 14:53:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=86=99=E5=85=A5MongoDB?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E6=9D=83=E9=99=90=E8=AE=A4=E8=AF=81bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../writer/mongodbwriter/KeyConstant.java | 4 ++++ .../writer/mongodbwriter/MongoDBWriter.java | 20 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/mongodbwriter/src/main/java/com/alibaba/datax/plugin/writer/mongodbwriter/KeyConstant.java b/mongodbwriter/src/main/java/com/alibaba/datax/plugin/writer/mongodbwriter/KeyConstant.java index 40de3124..13631d12 100644 --- a/mongodbwriter/src/main/java/com/alibaba/datax/plugin/writer/mongodbwriter/KeyConstant.java +++ b/mongodbwriter/src/main/java/com/alibaba/datax/plugin/writer/mongodbwriter/KeyConstant.java @@ -25,6 +25,10 @@ public class KeyConstant { * mongodb 数据库名 */ public static final String MONGO_DB_NAME = "dbName"; + /** + * mongodb 验证数据库 + */ + public static final String MONGO_AUTHDB = "authDb"; /** * mongodb 集合名 */ diff --git a/mongodbwriter/src/main/java/com/alibaba/datax/plugin/writer/mongodbwriter/MongoDBWriter.java b/mongodbwriter/src/main/java/com/alibaba/datax/plugin/writer/mongodbwriter/MongoDBWriter.java index 66c75078..aa128d56 100644 --- a/mongodbwriter/src/main/java/com/alibaba/datax/plugin/writer/mongodbwriter/MongoDBWriter.java +++ b/mongodbwriter/src/main/java/com/alibaba/datax/plugin/writer/mongodbwriter/MongoDBWriter.java @@ -29,6 +29,9 @@ public class MongoDBWriter extends Writer{ public static class Job extends Writer.Job { private Configuration originalConfig = null; + private MongoClient mongoClient; + private String userName = null; + private String password = null; @Override public List split(int mandatoryNumber) { @@ -42,6 +45,15 @@ public class MongoDBWriter extends Writer{ @Override public void init() { this.originalConfig = super.getPluginJobConf(); + this.userName = originalConfig.getString(KeyConstant.MONGO_USER_NAME); + this.password = originalConfig.getString(KeyConstant.MONGO_USER_PASSWORD); + String database = originalConfig.getString(KeyConstant.MONGO_DB_NAME); + String authDb = originalConfig.getString(KeyConstant.MONGO_AUTHDB, database); + if(!Strings.isNullOrEmpty(userName) && !Strings.isNullOrEmpty(password)) { + this.mongoClient = MongoUtil.initCredentialMongoClient(this.originalConfig,userName,password,authDb); + } else { + this.mongoClient = MongoUtil.initMongoClient(this.originalConfig); + } } @Override @@ -64,6 +76,7 @@ public class MongoDBWriter extends Writer{ private String userName = null; private String password = null; + private String authDb = null; private String database = null; private String collection = null; @@ -126,7 +139,7 @@ public class MongoDBWriter extends Writer{ if(Strings.isNullOrEmpty(database) || Strings.isNullOrEmpty(collection) || mongoClient == null || mongodbColumnMeta == null || batchSize == null) { throw DataXException.asDataXException(MongoDBWriterErrorCode.ILLEGAL_VALUE, - MongoDBWriterErrorCode.ILLEGAL_VALUE.getDescription()); + MongoDBWriterErrorCode.ILLEGAL_VALUE.getDescription()); } MongoDatabase db = mongoClient.getDatabase(database); MongoCollection col = db.getCollection(this.collection, BasicDBObject.class); @@ -179,7 +192,7 @@ public class MongoDBWriter extends Writer{ try { if (KeyConstant.isObjectIdType(type.toLowerCase())) { data.put(columnMeta.getJSONObject(i).getString(KeyConstant.COLUMN_NAME), - new ObjectId(record.getColumn(i).asString())); + new ObjectId(record.getColumn(i).asString())); } else if (KeyConstant.isArrayType(type.toLowerCase())) { String splitter = columnMeta.getJSONObject(i).getString(KeyConstant.COLUMN_SPLITTER); if (Strings.isNullOrEmpty(splitter)) { @@ -320,8 +333,9 @@ public class MongoDBWriter extends Writer{ this.userName = writerSliceConfig.getString(KeyConstant.MONGO_USER_NAME); this.password = writerSliceConfig.getString(KeyConstant.MONGO_USER_PASSWORD); this.database = writerSliceConfig.getString(KeyConstant.MONGO_DB_NAME); + this.authDb = writerSliceConfig.getString(KeyConstant.MONGO_AUTHDB, database); if(!Strings.isNullOrEmpty(userName) && !Strings.isNullOrEmpty(password)) { - this.mongoClient = MongoUtil.initCredentialMongoClient(this.writerSliceConfig,userName,password,database); + this.mongoClient = MongoUtil.initCredentialMongoClient(this.writerSliceConfig,userName,password,authDb); } else { this.mongoClient = MongoUtil.initMongoClient(this.writerSliceConfig); }