问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mongodb怎么用java插入数据

发布网友 发布时间:2022-04-08 22:19

我来回答

2个回答

懂视网 时间:2022-04-09 02:40

import java.io.BufferedReader; 2 import java.io.File; 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.util.LinkedList; 7 import java.util.List; 8 import org.bson.Document; 9 import com.mongodb.MongoClient; 10 import com.mongodb.client.MongoCollection; 11 import com.mongodb.client.MongoDatabase; 12 13 public class Test { 14 public static void main(String[] args) { 15 Pool p = new Pool(); 16 Produce pro = new Produce("p",p);//一个生产者 17 //三个消费者,用来向mogodb中存储数据
       Customer cus = new Customer("c", p); 18 Customer cus2 = new Customer("c2", p); 19 Customer cus3 = new Customer("c3", p); 20 new Thread(pro).start(); 21 new Thread(cus).start(); 22 new Thread(cus2).start(); 23 new Thread(cus3).start(); 24 25 } 26 } 27 28 class Produce implements Runnable{//生产者 29 30 private static final String DIR = "E:\targets";//扫描文件路径 31 private static final String FILE_SUFFIX = "html";//扫描文件类型 32 private Pool pool=null; 33 private String name = null; 34 public Produce(String name,Pool pool){ 35 this.pool= pool; 36 this.name = name; 37 } 38 @Override 39 public void run() { 40 getFilesInDir(DIR, FILE_SUFFIX); 41 } 42 43 public void getFilesInDir(String dir,String suffix){ 44 if(null!=dir && dir.trim().length()>0){ 45 File file = new File(dir.trim()); 46 if(file.isDirectory()){ 47 File[] flist = file.listFiles(); 48 if(null!=flist){ 49 for(File f:flist){ 50 if(f.isFile()){ 51 if(null==suffix){ 52 pool.putFile(f); 53 } 54 if(null!=suffix &&suffix.trim().length()>0){ 55 if(f.getName().endsWith(suffix.trim())){ 56 pool.putFile(f); 57 System.out.println(name+"pool存东西"+f.getName()); 58 } 59 } 60 }else{ 61 getFilesInDir(f.getAbsolutePath(),suffix); 62 } 63 } 64 } 65 } 66 } 67 } 68 69 } 70 71 class Customer implements Runnable{//消费者 72 private static final String CHARSET = "UTF-8";//文件处理编码格式 73 private static final String HOST = "127.0.0.1";//主机 74 private static final int PORT = 27017;//端口 75 private static final String DATABASE_NAME="mydb";//存储数据库名称 76 private static final String COLLECTION_NAME="mycol";//存储数据库Collection 77 MongoClient client =new MongoClient(HOST,PORT);; 78 private String name=null; 79 private Pool pool=null; 80 public Customer(String name,Pool pool){ 81 this.name = name; 82 this.pool = pool; 83 } 84 @Override 85 public void run() { 86 while(true){ 87 try { 88 File f = pool.fetchFile(); 89 saveToMonGoDb(f); 90 System.out.println(name+"pool取东西"+f.getName()); 91 } catch (Exception e) { 92 e.printStackTrace(); 93 } 94 } 95 } 96 97 private void saveToMonGoDb(File file){//将文件保存到数据库 98 MongoDatabase dataBase = client.getDatabase(DATABASE_NAME); 99 MongoCollection<Document> collection = dataBase.getCollection(COLLECTION_NAME); 100 String _id = file.getName().substring(0,file.getName().lastIndexOf(".")); 101 String content = readFileContext(file, CHARSET); 102 Document document = new Document("_id",_id).append("content", content); 103 collection.insertOne(document); 104 } 105 106 public static String readFileContext(File file,String charset) { 107 StringBuilder sb; 108 BufferedReader reader=null; 109 try { 110 reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), charset)); 111 String line = null; 112 sb = new StringBuilder(); 113 while(null!=(line = reader.readLine())){ 114 sb.append(line+" "); 115 } 116 return sb.toString(); 117 }catch (Exception e) { 118 e.printStackTrace(); 119 }finally{ 120 try { 121 reader.close(); 122 } catch (IOException e) { 123 e.printStackTrace(); 124 } 125 } 126 return null; 127 } 128 129 } 130 131 class Pool{ 132 volatile int size=0; 133 volatile private List<File> files = new LinkedList<File>(); 134 public synchronized void putFile(File file){ 135 while(size>1000){ 136 try { 137 this.wait(); 138 } catch (InterruptedException e) { 139 e.printStackTrace(); 140 } 141 } 142 files.add(file); 143 ++size; 144 notify(); 145 } 146 147 public synchronized File fetchFile(){ 148 while(size<=0){ 149 try { 150 this.wait(); 151 } catch (InterruptedException e) {e.printStackTrace();} 152 } 153 File file = null; 154 if(files.size()>0){ 155 file = files.remove(0); 156 --size; 157 } 158 notify(); 159 return file; 160 } 161 162 public int getSize(){ 163 return this.size; 164 } 165 }

 

利用java多线程写的一个工具向MongoDb中存储大量数据

标签:

热心网友 时间:2022-04-08 23:48

把bson数据文件restore到另一个db时,需要注意:不能先创建索引再restore数据,否则性能极差,mongorestore工具默认会在restore完数据时,根据mp出来的index信息创建索引,无须自己创建,如果是要更换索引,也应该在数据入库完之后再创建。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024年起,离婚是否退还彩礼? 益寿堂鸿洋神深海鱼油胶丸产品特性 服用深海鱼油对血质稠有好处吗 益寿堂鸿洋神深海鱼油胶丸适用症状 深海鱼油胶丸深海鱼油胶丸简介 梵谛诺深海鱼油胶丸适宜人群 新能源车8年强制报废吗 8年强制报废的车 市面上有哪些既显身材又很潇洒的外套款式值得推荐? 市面上有哪些简约实用又飒爽有型的外套款式值得入手? 市面上有哪些上身效果极具女人味的外套款式值得入手? 风行一时是什么意思 风靡与风行 这两个词的区别 请具体点 比如说这两个词的感*彩 日历风行是什么意思? 衰减时间常数是什么意思 风行一是什么意思 过程控制为什么说时间常数t是被控变量达到新的稳定值63.2% 试推导证明 电路中时间常数的定义是什么? 动感单车45分钟消耗多少千卡热量 什么是时间常数? 空中自行车消耗的热量是多少? 电路的时间常数有哪些计算方法,它的定义是啥 请问时间常数指的是什么? 动感单车40分钟消耗多少卡路里 谁知道时间常数的定义? 动感单车半小时消耗多少热量 矿山投资有哪些方面的收益? 领导交代了,今天必须找到有矿山的企业,上哪找啊晕 投资矿山赚钱吗? 投资矿山会赚钱吗 每天投资多久为宜 请问我一个朋友骗我去甘肃一个矿山投资了一百三拾万,而那个矿山是骗人的,我钱交了而矿山己有好多人都被 风行的风是啥意思 雷厉风行是什么意思啊 如何做好快手电商讲师 想做快手电商讲师,应该拍发什么样的视频? 雷厉风行的意思是什么? 做快手讲师应该发哪方面的视频? 严厉风行是什么意思? 快手电商老师收学员是真的吗 风行是什么啊? 怎么样才可以成为一位讲师? 快手上的老师靠谱吗? 雷厉风行是什么意思! 雷历风行是什么意思? 我在快手做讲师起个什么名字合适? 我的网名是风儿朋友就起了个网名叫风行这是什么意思 现在玩快手当讲师? 雷厉风行用来形容人是什么意思? 我是教师会唱歌会辅导数学会讲历史会讲人生规划会励志演讲,当然都不专业,我想在快手上发展该怎么发展? 叶落风行什么意思 W541光驱位接口是SATA3.0还是2.0?如果我用光驱位硬盘架转接装SSD的话,速度会不会有影响?