需要批量將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 }