MongoDB - JAVA测试DEMO

1、什么是mongoDB:

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组

2、mongoDB 特点:

  • 2.1、MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
  • 2.2、你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
  • 2.3、你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
  • 2.4、如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  • 2.5、Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  • 2.6、MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
  • 2.7、Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
  • 2.8、Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
  • 2.9、Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
  • 2.10、GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
  • 2.11、MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  • 2.12、MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
  • 2.13、MongoDB安装简单
3、下载MongoDB

下载地址:https://www.mongodb.com/download-center#community

4、下载MongoDB 相关java驱动(本人使用的是3.5.0版本)

驱动下载地址:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/

5、DEMO:

6、MongoDBJDBC.java

package com.dai.mondo.jdbc;

import java.util.ArrayList;
import java.util.List;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;

/**
 * 创建 MongoDB 连接
 * @author Dai_LW
 *
 */
public class MongoDBJDBC {
	
	private List<ServerAddress> addrs = new ArrayList<ServerAddress>();//服务地址集合
	private List<MongoCredential> credentials = new ArrayList<MongoCredential>();//权限认证集合
	
	
	/***
	 * 设置 服务地址
	 * @param ip 服务地址IP
	 * @param port 服务 端口
	 * @return
	 */
	public void setServerAddress(String ip, int port){
		ServerAddress serverAddress = new ServerAddress(ip, port);  
        addrs.add(serverAddress);
	}
	
	/**
	 * 权限认证
	 * @param userName 登录名
	 * @param database 数据库名
	 * @param password 登录密码
	 */
	public void setMongoCredentials(String userName, String database, String password){
		char[] pwd = password == null ? null : password.toCharArray();
		MongoCredential credential = MongoCredential.createCredential(userName, database, pwd);
		credentials.add(credential);
	}
	
	/**
	 * 获取MongoDB连接
	 * @return
	 */
	public MongoClient getMongoClient(){
		MongoClient mongoClient = new MongoClient(addrs, credentials);
		return mongoClient;
	}
	
	/**
	 * 连接到数据库
	 * @param mongoClient  MongoDB客户端
	 * @param databaseName 数据库名称
	 * @return
	 */
	public MongoDatabase getMongoDatabase(MongoClient mongoClient, String databaseName){
		return mongoClient.getDatabase(databaseName);
	}

	//=============================GET===============================
	public List<ServerAddress> getAddrs() {
		return addrs;
	}
	public List<MongoCredential> getCredentials() {
		return credentials;
	}
}

7、MongoDBTest.java

package com.dai.mondo.test;

import java.util.ArrayList;
import java.util.List;

import org.bson.Document;
import org.junit.Before;
import org.junit.Test;

import com.dai.mondo.jdbc.MongoDBJDBC;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;

public class MongoDBTest {

	//服务地址
	private final String SERVER_IP = "localhost";
	private final int SERVER_PORT = 27017;
	
	//用户名和密码
	private final String SERVER_NAME = "admin";
	private final String SERVER_PWD = "password";
	
	//数据库
	public final String DATABASE_NAME = "dai";
	
	private MongoDBJDBC mongoDBJDBC;
	private MongoClient mongoClient;
	private MongoDatabase mongoDatabase;
	
	@Before
	public void setUp(){
		mongoDBJDBC = new MongoDBJDBC();
		
		//设置服务地址
		mongoDBJDBC.setServerAddress(SERVER_IP, SERVER_PORT);
		
		//权限认证 (未添加用户 暂不进行权限认证)
//		mongoDBJDBC.setMongoCredentials(SERVER_NAME, DATABASE_NAME, SERVER_PWD);
		
		//获得MongoDB 客户端
		mongoClient = mongoDBJDBC.getMongoClient();
		
		//获得连接的数据库
		mongoDatabase = mongoDBJDBC.getMongoDatabase(mongoClient, DATABASE_NAME);
	}
	
	@Test
	public void tsetCreatedCollection(){//创建集合
		//集合不可重复添加
//		mongoDatabase.createCollection("test_01");
		
		//校验集合是否添加成功
		MongoCollection<Document> collection = mongoDatabase.getCollection("test_01");
		
		System.out.println("数据库名称:"+collection.getNamespace().getDatabaseName());
		
		System.out.println("集合名称:"+collection.getNamespace().getCollectionName());
	}
	
	@Test
	public void tsetCollectionSave(){//向集合保存数据
		//校验集合是否添加成功
		MongoCollection<Document> collection = mongoDatabase.getCollection("test_01");
		List<Document> arg0 = new ArrayList<Document>();
		
		Document document = new Document();
		document.append("name", "李元");
		document.append("age", "24");
		document.append("address", "上海闵行区浦江镇");
		document.append("remarkes", "李元");
		
		arg0.add(document);
		
		collection.insertMany(arg0);
		
		//测试是否保存成功
		FindIterable<Document> find = collection.find();
		MongoCursor<Document> mongoCursor = find.iterator();
		
		while (mongoCursor.hasNext()) {
			Document document2 = (Document) mongoCursor.next();
			System.out.println(document2);
			
		}
	}
	
	@Test
	public void tsetCollectionUpdate(){//向集合更新数据
		//校验集合是否添加成功
		MongoCollection<Document> collection = mongoDatabase.getCollection("test_01");
		//查询数据
		FindIterable<Document> find = collection.find();
		MongoCursor<Document> mongoCursor = find.iterator();
		
		while (mongoCursor.hasNext()) {
			Document document2 = (Document) mongoCursor.next();
			System.out.println(document2);
			
			collection.updateMany(Filters.eq("name", document2.get("name")), new Document("$set", new Document("name", document2.get("name") + "更新")));
		}
		
		//测试是否更新成功
		FindIterable<Document> nowfind = collection.find();
		MongoCursor<Document> nowmongoCursor = nowfind.iterator();
		
		while (nowmongoCursor.hasNext()) {
			Document document2 = (Document) nowmongoCursor.next();
			System.out.println(document2);
		}
	}
	
	@Test
	public void tsetCollectionDelete(){//删除数据
		MongoCollection<Document> collection = mongoDatabase.getCollection("test_01");
		
		//移除数据
		collection.deleteMany(Filters.eq("name", "李元更新"));
		
		//测试是否更新成功
		FindIterable<Document> nowfind = collection.find();
		MongoCursor<Document> nowmongoCursor = nowfind.iterator();
		
		while (nowmongoCursor.hasNext()) {
			Document document2 = (Document) nowmongoCursor.next();
			System.out.println(document2);
		}
		
	}
	
}

8、测试结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值