`
annan211
  • 浏览: 464955 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 操作mongodb3.x

 
阅读更多
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);
		}

	}
}
分享到:
评论

相关推荐

    mongodb demo3.x

    Java驱动3.x版本提供了新的API设计,称为“MongoDB Java Driver 3.0”,它基于Java 8并引入了异步编程模型,允许开发者以非阻塞的方式处理数据库操作,从而提高应用的并发性能。 此外,MongoDB 3.x还引入了聚合框架...

    mongodb安装配置及java操作mongodb

    然后,《Mongodb之java操作.doc》将详细介绍如何在Java应用程序中集成和使用MongoDB。Java驱动程序是连接MongoDB的主要方式,文档可能涵盖以下内容: 1. 添加MongoDB Java驱动程序依赖:通常通过Maven或Gradle添加`...

    Windows-MongoDB-4.4.1-x64.zip

    此外,开发人员可以使用各种编程语言(如Python、Java、Node.js等)与MongoDB交互,通过驱动程序连接到数据库,执行CRUD操作。MongoDB的灵活数据模型(文档型数据结构)使得数据存储和查询更加自然,特别适合处理非...

    Spring-Data-MongoDB3.2

    Spring Data MongoDB项目是Spring框架的一部分,它提供了一个方便的API来操作MongoDB数据库,使得开发人员可以更高效地进行数据存储和检索。 **1. Spring Data MongoDB简介** Spring Data MongoDB提供了与MongoDB...

    MongoDBjava各版本驱动下载

    MongoDB Java驱动是Java开发者与MongoDB数据库交互的重要工具,它允许Java应用程序通过标准的Java API来执行查询、插入、更新和删除等操作。在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在...

    mongo-java-driver-3.4.3,java连接mongodb的jar包驱动包

    mongo-java-driver-3.4.3.jar 是 MongoDB 官方为 Java 开发者提供的 Java 驱动程序的一...这个 JAR 文件包含了与 MongoDB 数据库进行交互所需的类和接口,允许 Java 应用程序连接到 MongoDB 实例并执行各种数据库操作。

    java-mongodb-jar.rar

    在导入这些jar包后,你可以使用MongoDB Java驱动提供的类和方法来创建MongoClient实例,连接到MongoDB服务器,执行CRUD(创建、读取、更新、删除)操作,以及进行更复杂的查询和聚合操作。 在使用过程中,记得配置...

    java连接mongo所需的3个jar包

    Java MongoDB驱动程序的主要版本有三个:Java Legacy Driver,MongoDB Java Driver 3.x系列,以及最新的MongoDB Java Driver 4.x系列。这里我们讨论的是3.x系列,因为它是目前广泛使用的版本。 1. **mongodb-driver...

    mongoDB连接需要的jar包,支持jdk1.6

    3.2.2版本提供了对MongoDB服务器3.x版本的支持,包含了许多优化和新特性,例如支持批量写操作、新的会话管理和交易功能等。 `spring-2.5.4.jar`是Spring框架的一个较旧版本,它是一个广泛使用的Java企业级应用开发...

    java面试——MongoDB面试专题.zip

    - 用户认证:设置用户角色和权限,了解SCRAM-SHA-1和X.509认证方式。 - 数据安全:使用加密连接,理解SSL/TLS的配置。 9. **监控与诊断**: - 使用`db.stats()`和`serverStatus`命令获取数据库和服务器状态。 -...

    play1.x连接mongodb

    Morphia是一个常见的选择,它是Google开发的一个用于MongoDB的数据映射框架,简化了在Java应用中操作MongoDB的过程。 在描述中提到"下载资源后,运行unit-tests即可",这暗示了项目可能已经包含了一套完整的测试...

    mongodb-java基础.pdf

    MongoDB Java 基础知识点 ...本文档提供了 MongoDB 的基础知识点,包括 MongoDB 的特点、文件存储格式、安装和使用、启动参数、停止服务等内容,对于学习 MongoDB 和使用 Java 语言操作 MongoDB非常有帮助。

    MongoDB Java Driver 简单操作

    ### MongoDB Java Driver 简单操作详解 #### 一、简介 MongoDB 是一款非常流行的文档型数据库系统,因其灵活性和高性能而被广泛应用于多种场景之中。为了方便开发者使用 Java 进行开发,MongoDB 提供了官方的 Java ...

    java操作mongodb

    Java操作MongoDB是一种常见的数据交互方式,特别是在大数据和NoSQL领域。MongoDB是一个高性能、开源、无模式的文档型数据库,而Java作为广泛使用的编程语言,提供了丰富的API来与MongoDB进行集成。以下是对这个主题...

    mongodb.zip

    2. `mongo-java-driver-3.0.4.jar`: 这是MongoDB官方提供的Java驱动程序,用于连接和操作MongoDB数据库。它提供了一套全面的API,用于执行各种数据库操作,如创建、查询、更新和删除文档,以及执行聚合框架和地理...

    demo13-mongodb.rar

    描述提到的是使用SpringBoot 2.x版本和MongoDB 4.2.x版本进行整合,这涉及到Java开发、微服务架构以及NoSQL数据库的相关知识。 在SpringBoot框架中整合MongoDB,首先需要理解SpringBoot的核心特性,它是一个快速...

    mongodb-java驱动,内含3个jar包和一个JAVA测试类

    MongoDB Java驱动是Java开发者与MongoDB数据库进行交互的重要工具,它允许程序通过Java代码执行CRUD(创建、读取、更新、删除)操作。在本压缩包中,包含了三个核心的jar包以及一个名为`MongoDBJDBC.java`的Java测试...

    MongoDB之Java使用例子

    在这个“MongoDB之Java使用例子”中,我们将深入探讨如何在Java环境中操作MongoDB数据库,包括增、删、改、查(CRUD)操作以及图像数据的存储和检索。 首先,Java与MongoDB的交互主要通过MongoDB的Java驱动程序实现...

    mongodb-test-mvn:MongoDB3.x的实践示例,内含一个非常简单易用的对象转换的工具类可用于实体类与MongoDB对象之间的相互转换

    总结来说,"mongodb-test-mvn"项目提供了一个实用的工具类,帮助Java开发者在MongoDB 3.x环境中更方便地进行对象转换,简化了数据操作。学习并应用这个示例,可以提升你在处理MongoDB数据时的效率和灵活性。

Global site tag (gtag.js) - Google Analytics