MongoDB 与 Java,
分享于 点击 19462 次 点评:139
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;
这里就不在帖代码了,感兴趣的可以百度百度谷歌谷歌查一下;相关文章
- 暂无相关文章
用户点评