通过Java给MongoDB数据库集合格式化时间
需要批量将MongoDB数据库的集合的时间格式化
即:将10/Nov/2016:00:01:02 +0800转化为2016-11-10 00:01:02
效果图:
代码如下:
1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 import java.util.Locale; 5 6 import org.bson.Document; 7 8 import com.mongodb.MongoClient; 9 import com.mongodb.MongoClientOptions; 10 import com.mongodb.ServerAddress; 11 import com.mongodb.client.FindIterable; 12 import com.mongodb.client.MongoCollection; 13 import com.mongodb.client.MongoDatabase; 14 import com.mongodb.client.model.Filters; 15 import com.mongodb.client.result.UpdateResult; 16 17 public class MongoDB { 18 public static void main(String[] args) throws java.text.ParseException { 19 MongoClientOptions option = MongoClientOptions.builder().connectTimeout(60000).build(); 20 MongoClient monGoClient = new MongoClient(new ServerAddress("localhost", 27017), option); 21 // 获取操作数据库 22 MongoDatabase db = monGoClient.getDatabase("result");//result为数据库名 23 // 获取集合。后面的操作,大部分都是基于集合操作 24 MongoCollection<Document> contections = db.getCollection("result");//此result为数据库里面的集合名 25 System.out.println("MongoDB数据库连接成功"); 26 // 查询集合中的所有数据 27 FindIterable<Document> result = contections.find(); 28 for (Document document : result) { 29 String dataTime = document.getString("Date");//Date为result集合里面的字段名 30 System.out.println(dataTime); 31 String DataTime = parseDate(dataTime); 32 System.out.println(DataTime); 33 UpdateResult update = contections.updateOne(Filters.eq("Date", dataTime), 34 new Document("$set", new Document("Date", DataTime))); 35 } 36 System.out.println("精细化操作完成"); 37 } 38 39 // 改变时间的格式 40 public static String parseDate(String dateStr) throws java.text.ParseException { 41 42 SimpleDateFormat input_date = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.ENGLISH); 43 SimpleDateFormat output_date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 44 String finalDate = ""; 45 try { 46 Date parse_date = input_date.parse(dateStr); 47 finalDate = output_date.format(parse_date); 48 } catch (ParseException e) { 49 e.printStackTrace(); 50 } 51 52 return finalDate; 53 } 54 }