MongoDB 与 Java

MongoDB的学习教程有很多 链接

这里先简单的介绍一下MongoDB 在Java WEB中的应用

我们边说特点边说应用

1) 数据存储/读取方式:基于内存,将数据存在物理内存中,实现高速读写,并且可以就地更新,错误处理机制;还有特别棒的全文检索,极大的优化了检索数据时间    ---   根据这一点可以做高并发的缓存

2) JSON的存储格式    ---    根据这一点在WEB前后台传输的时候可以更方便而不用进行格式转换

3) 高扩展性    ---   集群

4)无事务机制    ---    这个特点就局限了MongoDB的使用范畴(不能参加需要事务控制的逻辑处理)

建议:在学习MongoDB时一定注意两个问题1:非结构化存储;2:关于版本的问题;


言归正传下边贴上JAVA代码:

首先是 jar 包

我这里用的是Maven做的包管理

<dependency>
	<groupId>org.mongodb</groupId>
	<artifactId>mongo-java-driver</artifactId>
	<version>3.0.4</version>
</dependency>

然后就是java代码可以利用这个代码封装成一个工具类进行简单实现

import java.util.List;

import org.bson.Document;
import org.bson.conversions.Bson;
import org.bson.types.ObjectId;

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.WriteConcern;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.MongoClientOptions.Builder;

public enum NewMongoDBMyUtil {
	DEMO;
	
	//链接
	private MongoClient mongoClient;
	//数据库对象
	private MongoDatabase database;
	//集合表对象
	private MongoCollection<Document> mongoCollection;
	
	
	//创建链接
	public void getMongoClient (String ip, int port) {
		mongoClient = new MongoClient(ip, port);
		//配置链接池
		Builder options = new MongoClientOptions.Builder();
		// options.autoConnectRetry(true);// 自动重连true
		// options.maxAutoConnectRetryTime(10); // the maximum auto connect
		options.connectionsPerHost(300);// 连接池设置为300个连接,默认为100
		options.connectTimeout(15000);// 连接超时,推荐>3000毫秒
		options.maxWaitTime(5000);
		options.socketTimeout(0);// 套接字超时时间,0无限制
		options.threadsAllowedToBlockForConnectionMultiplier(5000);// 线程队列数,如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。
		options.writeConcern(WriteConcern.SAFE);//
		options.build();
		System.out.println("以建立连接");
	}
	
	//查看所有数据库
	public void getDatabases () {
		@SuppressWarnings("deprecation")
		List<String> lists = mongoClient.getDatabaseNames();
		System.out.println("所有数据库:|" + lists.toString());;
	}
	
	//获取数据库连接
	public MongoDatabase getDatabase (String databaseName) {
		database = mongoClient.getDatabase(databaseName);
		if (database != null) {
			System.out.println("获取到数据库:|" + database.getName());
		} else {
			System.out.println("没有获取到数据库");
		}
		return database;
	}
	
	//查看所有集合对象表
	public void getCollections() {
		MongoIterable<String> iterable = database.listCollectionNames();
		System.out.println("所有集合表对象:|");
		for (String collectionName : iterable) {
			System.out.print("|" +collectionName + "|");
		}
		System.out.println();
	}
	
	//获取集合对象表
	public MongoCollection<Document> getCollection(String collection) {
		mongoCollection = database.getCollection(collection);
		System.out.println("获取到的集合对象表:|" + mongoCollection.getNamespace());
		return mongoCollection;
	}
	
	//删除数据库
	public void removeDatabase(String databaseName) {
		getDatabase(databaseName).drop();
		System.out.println("已删除数据库" + databaseName);
	}
	
	//数据的个数
	public void checkDataNum() {
		long l = mongoCollection.count();
		System.out.println("数据个数 :|" + l);
	}
	
	//查看数据
	public void checkOne(String con, String id) {
		Bson bson = Filters.eq(con, id);
		FindIterable<Document> findIterable = mongoCollection.find(bson);
		for (Document document : findIterable) {
			System.out.println("单列全部" + document.toString());
			System.out.println("指定列001:|" + document.getString("001"));
		}
	}
	
	//分页查询数据
	public void checkByPage(String con, String id, int pageNum, int pageSize) {
		Bson bson = Filters.eq(con, id);
		Bson orderBy = new BasicDBObject("_id", 1);
		MongoCursor<Document> mongoCursors = mongoCollection.find(bson).sort(orderBy).skip((pageNum - 1) * pageSize).limit(pageSize).iterator();
		while (mongoCursors.hasNext()) {
			Document document = mongoCursors.next();
			System.out.println("分页查询数据:|" + document.toJson());
		}
	}
	
	//通过ID删除数据
	public void removeOneData(String id) {
		ObjectId objectId = new ObjectId(id);
		Bson bson = Filters.eq("_id", objectId);
		DeleteResult deleteResult = mongoCollection.deleteOne(bson);
		long l = deleteResult.getDeletedCount();
		System.out.println("删除的ID:|" + l);
	}
	
	//插入数据
	public void insertDoc() {
		for (int i = 0; i < 4; i++) {
			Document doc = new Document();
			doc.put("001", "001_data");
			doc.put("002", "NEFU" + i);
			//数组
			Document interests = new Document();
			interests.put("game", "game" + i);
			interests.put("ball", "ball" + i);
			doc.put("interests", interests);
			mongoCollection.insertOne(doc);
			System.out.println("数据已插入!" + (i + 1));
		}
		System.out.println("===========================");
	}
	
	//通过ID更改数据
	public void updataDoc(String id, String connl, String newdata) {
		Document newdoc = new Document();
		newdoc.put("$set", new Document(connl, newdata));
		
		ObjectId objectId = new ObjectId(id);
		Bson bson = Filters.eq("_id", objectId);
		mongoCollection.updateOne(bson, newdoc);
	}
	
	//关闭链接
	public void close() {
		if (mongoClient != null) {
			mongoClient.close();
			mongoClient = null;
		}
	}
}

Java实现MongoDB的增删改查还有一种方式

用到的Java类有:

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.MongoClient;
这里就不在帖代码了,感兴趣的可以百度百度谷歌谷歌查一下;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值