gpt4 book ai didi

java - 如何在不创建新的mongodb连接的情况下插入文档?

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:27 25 4
gpt4 key购买 nike

我正在尝试使用 mongodb 作为数据库开发一个java项目。我有 2 种方法(线程、无线程)

    //myMongoHelper, for connection
//mydbhelper, threaded insertion

myMongoHelper m = new myMongoHelper("localhost",27017,"mydb","mycoll");
int id=100;
Thread t = new Thread(new mydbhelper(new BasicDBObject()));
while(id>0){
t.start();
t = new Thread(new mydbhelper(new BasicDBObject()));
id--;
}
t.join();
m.myclose();

        int id =100;
mongoClient = new MongoClient("localhost" , 27017 );
DBCollection coll = mongoClient.getDB( "mydb" ).getCollection("mycoll");
while(id>0){
coll.insert(new BasicDBObject());
id--;
}
mongoClient.close();

$mongod shell 在执行代码时显示XX 连接现已打开,并且默认情况下它会在 java 执行结束时终止所有连接。

所以我想知道,

  1. 打开的连接会影响 mongodb 数据库以及如何影响?
  2. 是否可以在插入后终止线程以减少连接数?
  3. 对于专门用于插入的 mongodb 操作,线程是否更好?

请改进我的代码。

最佳答案

我将一起回答所有这些问题,每个新连接都需要大量资源来初始化,因此请将它们保持在尽可能低的水平。

不要为每个线程创建一个新连接,而是使用单个连接并分发您的查询!您可以通过这种方式分发您的查询!您还可以使用批量插入来插入大量文档。

    DBCollection coll = mongoClient.getDB( "mydb" ).getCollection("mycoll");
ArrayList<BasicDBObject> dbos = new ArrayList<BasicDBObject>();
while(id>0){
dbs.add(new BasicDBObject());
id--;
}
coll.insert(dbos);

关于java - 如何在不创建新的mongodb连接的情况下插入文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40860754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com