1.需求
1.1mongo文档结构
{
"_id" : ObjectId("5b8d04061515e8200e4403ad"),
"name_id" : NumberLong(46),
"value_id" : 2,
"age_value" : NumberLong(97),
"sex_type" : NumberLong(4),
"mydata" : {
"mydata_11" : "",
"mydata_1xxx" : 5.0,
"mydata_3" : 0.6,
"mydata_2" : "2018-12-10 17:53:34:350"
}
}
1.2需求描述
- 如果上述文档的mydata不为空,它下属文档的key例如,mydata_11的值如果为空,需要把这个mydata_11的数据从mydata中移除。
- 如果上述文档的mydata不为空,它下属文档的key例如,mydata_1xxx这个key不满足后_后面的是3个数字以组成的,需要把这个mydata_1xxx的数据从mydata中移除。
1.3处理后的文档格式
{
"_id" : ObjectId("5b8d04061515e8200e4403ad"),
"name_id" : NumberLong(46),
"value_id" : 2,
"age_value" : NumberLong(97),
"sex_type" : NumberLong(4),
"mydata" : {
"mydata_3" : 0.6,
"mydata_2" : "2018-12-10 17:53:34:350"
}
}
2.代码
2.1maven项目pom.xml
<properties>
<mongo_driver.version>2.0</mongo_driver.version>
</properties>
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.10.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin </artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>ai.plantdata.DataclearMainBatch</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2.2工具类MongoUtil
- 获取mongo的连接客户端,支持集群和单机连接方式
public class MongoUtil {
private static MongoClient mongoClient = null;
public static String mongoIp;
public static String mongoPort;
public MongoUtil(String mongoIp, String mongoPort) {
this.mongoIp = mongoIp;
this.mongoPort = mongoPort;
}
public static MongoClient getMongoClient() {
if (mongoClient == null) {
MongoClientOpti