博客
关于我
MongoDB快速插入1000w测试数据(Java)
阅读量:798 次
发布时间:2023-02-09

本文共 2655 字,大约阅读时间需要 8 分钟。

MongoDB 数据插入优化指南

1. 添加 Maven 依赖

在项目中添加 MongoDB 驱动依赖,采用以下方式配置:

org.mongodb
mongodb-driver-sync
4.5.0

请根据实际需求选择最新版本。

2. 复制代码

以下是用于插入数据的完整 Java 类代码:

import com.mongodb.client.MongoClients;import com.mongodb.client.MongoClient;import com.mongodb.client.MongoDatabase;import com.mongodb.client.MongoCollection;import com.mongodb.client.model.Indexes;import org.bson.Document;import java.util.ArrayList;import java.util.List;import java.util.Random;public class MongoDBInsertTestData {    private static final String DATABASE_NAME = "test_database";    private static final String COLLECTION_NAME = "test_collection";    private static final int TOTAL_RECORDS = 100_000_000;    private static final int BATCH_SIZE = 10_000;    public static void main(String[] args) {        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {            MongoDatabase database = mongoClient.getDatabase(DATABASE_NAME);            MongoCollection collection = database.getCollection(COLLECTION_NAME);            // 创建唯一索引            collection.createIndex(Indexes.ascending("id"));            insertData(collection);            System.out.println("Data insertion completed.");        }    }    private static void insertData(MongoCollection collection) {        Random random = new Random();        List
batch = new ArrayList<>(); for (int i = 0; i < TOTAL_RECORDS; i++) { Document doc = new Document("id", i) .append("name", generateRandomString(10)) .append("value", random.nextDouble()) .append("timestamp", System.currentTimeMillis()); batch.add(doc); if (batch.size() == BATCH_SIZE) { collection.insertMany(batch); System.out.println("Inserted " + batch.size() + " records."); batch.clear(); } } if (!batch.isEmpty()) { collection.insertMany(batch); System.out.println("Inserted " + batch.size() + " records."); } } private static String generateRandomString(int length) { StringBuilder sb = new StringBuilder(length); String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; Random random = new Random(); for (int i = 0; i < length; i++) { sb.append(characters.charAt(random.nextInt(characters.length()))); } return sb.toString(); }}

3. 修改配置并运行

在项目中添加上述依赖后,将代码复制到合适的位置,并确保以下配置正确:

  • pom.xml 中添加 MongoDB 依赖。
  • 修改 MongoDB 连接地址,确保 mongodb://localhost:27017 与你的本地 MongoDB 实例一致。

运行代码时,命令行执行 mvn clean run,即可开始插入测试数据。

转载地址:http://qnffk.baihongyu.com/

你可能感兴趣的文章
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询数据库所有表的字段信息
查看>>
【Java基础】什么是面向对象?
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>