package com.labci.mongodb.test;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.poi.ss.formula.functions.T;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.robustel.iot.data.parse.entity.DeviceCommunicationModuleData;
import com.robustel.pl.util.utils.UUIDUtil;
/**
* 功能说明:java链接操作mongodb
*
* 思路:1.建立连接并验证 2.获取一个集合列表 3.获取选择第一
* 个集合 4.插入集合 5.查询集合
*/
public class MongodbTest {
static List<String> companyIds = new ArrayList<String>(500);
static List<String> deviceIds = new ArrayList<String>(20000);
static MongodbTest mo = new MongodbTest();
static MongoDatabase db = mo.connectMongoDB("link_user", "rlink", "123456".toCharArray());
/**
* 连接mongodb数据库服务,验证用户名密码
*
* @return
*/
private MongoDatabase connectMongoDB(String name, String databaseName, char[] pswd)
{
//创建个 credential对象
MongoCredential credential = MongoCredential.createCredential(name, databaseName, pswd);
//把对象传入mongoClient的构造方法中,说明:用户名密码端口啥的都正确会得到mongoClient,否则程序会报错
//mongodb还有很多种验证方式 详见:http://mongodb.github.io/mongo-java-driver/3.0/driver/reference/connecting/authenticating/
MongoClient mongoClient = new MongoClient(new ServerAddress("172.16.7.110", 27017), Arrays.asList(credential));
MongoDatabase db = mongoClient.getDatabase("rlink");
return db;
}
/**
* 获取一个文档
*
* @param db
*/
private MongoCollection<Document> getDBCollection(MongoDatabase db, String setName)
{
MongoIterable<String> cols = db.listCollectionNames();
for (String c : cols)
{
System.out.println("collectionName: " + c);
}
MongoCollection<Document> col = db.getCollection(setName);
if (col != null)
return col;
else
return null;
}
/**
* 插入一条数据
*
* @param col
* @param username
* @param password
*/
private void insertCollection(MongoCollection<Document> col, String username, String password)
{
Document doc =new Document();
doc.put("usename", username);
doc.put("password", password);
col.insertOne(doc);
;
}
private void insertMany(MongoCollection<Document> col,
List<Document> documents){
col.insertMany(documents);
}
/**
* 查找一个doc
*
* @param colName
*/
private void findColByColName(MongoCollection<Document> doc)
{
FindIterable<Document> mydoc = doc.find();
for (Document d : mydoc)
{
System.out.println(d.toJson());
System.out.println(d.toString());
}
}
public static String randomLonLat(double MinLon, double MaxLon, double MinLat, double MaxLat, String type) {
Random random = new Random();
BigDecimal db = new BigDecimal(Math.random() * (MaxLon - MinLon) + MinLon);
String lon = db.setScale(6, BigDecimal.ROUND_HALF_UP).toString();// 小数后6位
db = new BigDecimal(Math.random() * (MaxLat - MinLat) + MinLat);
String lat = db.setScale(6, BigDecimal.ROUND_HALF_UP).toString();
if (type.equals("Lon")) {
return lon;
} else {
return lat;
}
}
public static void main(String[] args){
for(int i=0;i<500;i++){
companyIds.add(UUIDUtil.getKeys());
}
for(int i=0;i<20000;i++){
deviceIds.add(UUIDUtil.getKeys());
}
Integer count = 200000;
Integer betch = 1000;
Random random = new Random();
ExecutorService exec = Executors.newFixedThreadPool(150);
while(count >0 ){
exec.execute(new MongodbWork(count,betch,random,exec));
count--;
}
}
static class MongodbWork implements Runnable {
Integer count;
Random random;
ExecutorService exec;
Integer betch;
String collectionName = "gps";
public MongodbWork(Integer count,Integer betch,Random random,ExecutorService exec){
this.count = count;
this.betch = betch;
this.random = random;
this.exec = exec;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() +"---"+count +"----"+betch+"---"+count);
List<Document> arrays = new ArrayList<Document>(betch);
for(int i=0;i< betch;i++){
Document mongoEntry =new Document();
mongoEntry.put("companyId",companyIds.get(random.nextInt(companyIds.size())));
mongoEntry.put("id",UUIDUtil.getKeys());
mongoEntry.put("createTime",new Date());
mongoEntry.put("deviceId",deviceIds.get(random.nextInt(deviceIds.size())));
mongoEntry.put("moduleCode","gps");
mongoEntry.put("deviceTime",new Date().getTime());
Map<String,Object> maps = new HashMap<String,Object>();
maps.put("longitude", randomLonLat(0, 2000, 0, 3000, "Lon"));
maps.put("latitude", randomLonLat(0, 2000, 0, 3000, "Lat"));
mongoEntry.put("fieldValue",maps);
arrays.add(mongoEntry);
}
MongoCollection<Document> doc = mo.getDBCollection(db, collectionName);
mo.insertMany(doc, arrays);
}
}
}
分享到:
相关推荐
Java驱动3.x版本提供了新的API设计,称为“MongoDB Java Driver 3.0”,它基于Java 8并引入了异步编程模型,允许开发者以非阻塞的方式处理数据库操作,从而提高应用的并发性能。 此外,MongoDB 3.x还引入了聚合框架...
然后,《Mongodb之java操作.doc》将详细介绍如何在Java应用程序中集成和使用MongoDB。Java驱动程序是连接MongoDB的主要方式,文档可能涵盖以下内容: 1. 添加MongoDB Java驱动程序依赖:通常通过Maven或Gradle添加`...
此外,开发人员可以使用各种编程语言(如Python、Java、Node.js等)与MongoDB交互,通过驱动程序连接到数据库,执行CRUD操作。MongoDB的灵活数据模型(文档型数据结构)使得数据存储和查询更加自然,特别适合处理非...
Spring Data MongoDB项目是Spring框架的一部分,它提供了一个方便的API来操作MongoDB数据库,使得开发人员可以更高效地进行数据存储和检索。 **1. Spring Data MongoDB简介** Spring Data MongoDB提供了与MongoDB...
MongoDB Java驱动是Java开发者与MongoDB数据库交互的重要工具,它允许Java应用程序通过标准的Java API来执行查询、插入、更新和删除等操作。在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在...
mongo-java-driver-3.4.3.jar 是 MongoDB 官方为 Java 开发者提供的 Java 驱动程序的一...这个 JAR 文件包含了与 MongoDB 数据库进行交互所需的类和接口,允许 Java 应用程序连接到 MongoDB 实例并执行各种数据库操作。
在导入这些jar包后,你可以使用MongoDB Java驱动提供的类和方法来创建MongoClient实例,连接到MongoDB服务器,执行CRUD(创建、读取、更新、删除)操作,以及进行更复杂的查询和聚合操作。 在使用过程中,记得配置...
Java MongoDB驱动程序的主要版本有三个:Java Legacy Driver,MongoDB Java Driver 3.x系列,以及最新的MongoDB Java Driver 4.x系列。这里我们讨论的是3.x系列,因为它是目前广泛使用的版本。 1. **mongodb-driver...
3.2.2版本提供了对MongoDB服务器3.x版本的支持,包含了许多优化和新特性,例如支持批量写操作、新的会话管理和交易功能等。 `spring-2.5.4.jar`是Spring框架的一个较旧版本,它是一个广泛使用的Java企业级应用开发...
- 用户认证:设置用户角色和权限,了解SCRAM-SHA-1和X.509认证方式。 - 数据安全:使用加密连接,理解SSL/TLS的配置。 9. **监控与诊断**: - 使用`db.stats()`和`serverStatus`命令获取数据库和服务器状态。 -...
Morphia是一个常见的选择,它是Google开发的一个用于MongoDB的数据映射框架,简化了在Java应用中操作MongoDB的过程。 在描述中提到"下载资源后,运行unit-tests即可",这暗示了项目可能已经包含了一套完整的测试...
MongoDB Java 基础知识点 ...本文档提供了 MongoDB 的基础知识点,包括 MongoDB 的特点、文件存储格式、安装和使用、启动参数、停止服务等内容,对于学习 MongoDB 和使用 Java 语言操作 MongoDB非常有帮助。
### MongoDB Java Driver 简单操作详解 #### 一、简介 MongoDB 是一款非常流行的文档型数据库系统,因其灵活性和高性能而被广泛应用于多种场景之中。为了方便开发者使用 Java 进行开发,MongoDB 提供了官方的 Java ...
Java操作MongoDB是一种常见的数据交互方式,特别是在大数据和NoSQL领域。MongoDB是一个高性能、开源、无模式的文档型数据库,而Java作为广泛使用的编程语言,提供了丰富的API来与MongoDB进行集成。以下是对这个主题...
2. `mongo-java-driver-3.0.4.jar`: 这是MongoDB官方提供的Java驱动程序,用于连接和操作MongoDB数据库。它提供了一套全面的API,用于执行各种数据库操作,如创建、查询、更新和删除文档,以及执行聚合框架和地理...
描述提到的是使用SpringBoot 2.x版本和MongoDB 4.2.x版本进行整合,这涉及到Java开发、微服务架构以及NoSQL数据库的相关知识。 在SpringBoot框架中整合MongoDB,首先需要理解SpringBoot的核心特性,它是一个快速...
MongoDB Java驱动是Java开发者与MongoDB数据库进行交互的重要工具,它允许程序通过Java代码执行CRUD(创建、读取、更新、删除)操作。在本压缩包中,包含了三个核心的jar包以及一个名为`MongoDBJDBC.java`的Java测试...
在这个“MongoDB之Java使用例子”中,我们将深入探讨如何在Java环境中操作MongoDB数据库,包括增、删、改、查(CRUD)操作以及图像数据的存储和检索。 首先,Java与MongoDB的交互主要通过MongoDB的Java驱动程序实现...
总结来说,"mongodb-test-mvn"项目提供了一个实用的工具类,帮助Java开发者在MongoDB 3.x环境中更方便地进行对象转换,简化了数据操作。学习并应用这个示例,可以提升你在处理MongoDB数据时的效率和灵活性。