mongdb drivar for java 3.0版本之mongo-java-driver-3.0.0.jar 使用

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 本文使用的是最新的3.0版本驱动包。maven地址 <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.0.0</version></depend

本文使用的是最新的3.0版本驱动包。maven地址

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


说明,2.6以后的版本的java驱动和旧的版本有很大区别,本文是基于3.0版本的驱动

无需认证连接mongdb服务器

import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.bson.Document;

//不需要认证
public class Auth_no {
	
	/**
	 * 获得无密码验证的client
	 * @param ip
	 * @param port
	 * @return
	 */
	public static MongoClient getClient(String ip,int port){
		MongoClient client=null;
		try {
		MongoClientOptions.Builder build = new MongoClientOptions.Builder();
		// 与数据最大连接数50
		build.connectionsPerHost(50);
		// 如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待
		build.threadsAllowedToBlockForConnectionMultiplier(50);
		build.connectTimeout(1 * 60 * 1000);
		build.maxWaitTime(2 * 60 * 1000);
		MongoClientOptions options = build.build();
		InetAddress inetAddress;
	
			inetAddress = InetAddress.getByName(ip);
		
		ServerAddress addr=new ServerAddress(inetAddress, port);//设置地址
		client = new MongoClient(addr, options);
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return client;
	}
	
	
	public static void main(String args[]) throws UnknownHostException {
		MongoClientOptions.Builder build = new MongoClientOptions.Builder();
		// 与数据最大连接数50
		build.connectionsPerHost(50);
		// 如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待
		build.threadsAllowedToBlockForConnectionMultiplier(50);
		build.connectTimeout(1 * 60 * 1000);
		build.maxWaitTime(2 * 60 * 1000);
		MongoClientOptions options = build.build();
		InetAddress inetAddress=InetAddress.getByName("127.0.0.1");
		ServerAddress addr=new ServerAddress(inetAddress, 2222);//设置地址
		MongoClient client = new MongoClient(addr, options);

		// 获取数据库test,不存在的话,会自动建立该数据库
		MongoDatabase db = client.getDatabase("lhy");

		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoCollection<Document> users = db.getCollection("lhy");
		Document document = new Document();
		document.append("firstName", "lei");
		document.append("address", "sichuan chengdu");
		users.insertOne(document);
		// MongoClient使用完后必须要close释放资源
		client.close();
	}
}

需要认证

import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoClientURI;
import com.mongodb.MongoCredential;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.bson.Document;

/**
 * 需要认证
 * @author Administrator
 *
 */
public class Auth_ok {
	
	
	
	/**
	 * 第一种认证方式
	 */
	public static void auth1(){
		
		String sURI = String.format("mongodb://%s:%s@%s:%d/%s", "lhy1", "123", "localhost", 27017, "lhy"); 
		MongoClientURI uri = new MongoClientURI(sURI); 
		MongoClient mongoClient = new MongoClient(uri); 
		MongoDatabase db = mongoClient.getDatabase("lhy");
		MongoCollection<Document> users = db.getCollection("lhy");
		Document document = new Document();
		document.append("aaa", "lei");
		document.append("bbb", "sichuan chengdu");
		users.insertOne(document);
		mongoClient.close();
	}
	/**
	 * 第二种认证方式
	 * @throws UnknownHostException
	 */
	public static void auth2() throws UnknownHostException{
		
		MongoClientOptions.Builder build = new MongoClientOptions.Builder();
		// 与数据最大连接数50
		build.connectionsPerHost(50);
		// 如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待
		build.threadsAllowedToBlockForConnectionMultiplier(50);
		build.connectTimeout(1 * 60 * 1000);
		build.maxWaitTime(2 * 60 * 1000);

		MongoClientOptions options = build.build();
		MongoCredential crclientedentials = MongoCredential
				.createScramSha1Credential("lhy1", "lhy", "123".toCharArray());
		List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();
		credentialsList.add(crclientedentials);//凭证列表,英文一个数据库中可能有多个账号密码
		InetAddress inetAddress=InetAddress.getByName("127.0.0.1");
		ServerAddress addr=new ServerAddress(inetAddress, 27017);//设置地址
		MongoClient client = new MongoClient(addr, credentialsList, options);

		// 获取数据库test,不存在的话,会自动建立该数据库
		MongoDatabase db = client.getDatabase("lhy");

		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoCollection<Document> users = db.getCollection("lhy");
		Document document = new Document();
		document.append("firstName", "lei");
		document.append("address", "sichuan chengdu");
		users.insertOne(document);
		// MongoClient使用完后必须要close释放资源
		client.close();
	}
	public static void main(String args[]) throws UnknownHostException {
		auth1();
	}
}

增加

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

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;


public class M_Insert {
	
	/**
	 * 单个插入
	 */
	public static void insert_1(){
		
		MongoClient client=Auth_no.getClient("127.0.0.1", 2222);
		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoDatabase db = client.getDatabase("lhy");
		MongoCollection<Document> collection = db.getCollection("lhy");
		Document document = new Document();
		document.append("name", "ddd  aaa");
		document.append("age", "lhy gggg");
		collection.insertOne(document);
		
		

		// MongoClient使用完后必须要close释放资源
		client.close();
	}
	
	/**
	 * 批量插入
	 */
	public static void insert_2(){
		
		MongoClient client=Auth_no.getClient("127.0.0.1", 2222);
		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoDatabase db = client.getDatabase("lhy");
		MongoCollection<Document> collection = db.getCollection("lhy");
		//创建一个包含多个文档的列表
		 List<Document> documents = new ArrayList<Document>();
		 for (int i = 0; i < 100; i++) {
		 documents.add(new Document("i", i));
		 }
		//  向文档中插入列表
		 collection.insertMany(documents);

	}
	public static void main(String[] args) {
		insert_1();
	}

}

删除

import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Filters.gte;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;


public class M_Delete {

	
	public static void delete_1(){
		MongoClient client=Auth_no.getClient("127.0.0.1", 2222);
		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoDatabase db = client.getDatabase("lhy");
		MongoCollection<Document> collection = db.getCollection("lhy");
		// 删除第一个符合条件的数据
		 collection.deleteOne(eq("name", "lhy"));
		//  获取全部文档,可以看到没有110这个数了
		 for (Document cur : collection.find()) {
		 System.out.println(cur.toJson());
		 }

		// 删除所有符合条件的数据,并且返回结果
		 DeleteResult deleteResult = collection.deleteMany(gte("i", 100));
		//  输出删除的行数
		 System.out.println(deleteResult.getDeletedCount());
		//  获取全部文档,所有i>=100的数据都没了
		 for (Document cur : collection.find()) {
		 System.out.println(cur.toJson());
		 }
	}
	
	
	public static void main(String[] args) {
		MongoClient client=Auth_no.getClient("127.0.0.1", 2222);
		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoDatabase db = client.getDatabase("lhy");
		MongoCollection<Document> collection = db.getCollection("lhy");
		collection.drop();
	}
}

修改

import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Filters.gte;
import static com.mongodb.client.model.Filters.lt;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;


public class M_Update {
	/* 修改时的参数:
	 $inc 对指定的元素加
	 $mul 乘
	 $rename 修改元素名称
	 $setOnInsert 如果以前没有这个元素则增加这个元素,否则不作任何更改
	 $set 修改制定元素的值
	 $unset 移除特定的元素
	 $min 如果原始数据更大则不修改,否则修改为指定的值
	 $max 与$min相反
	 $currentDate 修改为目前的时间*/
	public static void update_1()
	{
		MongoClient client=Auth_no.getClient("127.0.0.1", 2222);
		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoDatabase db = client.getDatabase("lhy");
		MongoCollection<Document> collection = db.getCollection("lhy");
		// 修改第一个符合条件的数据
		// $set 为修改
		 collection.updateOne(eq("i", 10), new Document("$set", new
		 Document("i", 110)));
		//  获取全部文档,可以看到以前10的地方变成了110
		 for (Document cur : collection.find()) {
		 System.out.println(cur.toJson());
		 }

		// 批量修改数据并且返回修改的结果,讲所有小于100的结果都加100
		 UpdateResult updateResult = collection.updateMany(lt("i", 100),
		 new Document("$inc", new Document("i", 100)));
		//  显示发生变化的行数
		 System.out.println(updateResult.getModifiedCount());
		//  获取全部文档,可以看到除了刚才修改的110其他的全为了100
		 for (Document cur : collection.find()) {
		 System.out.println(cur.toJson());
		 }

		
	}
	public static void main(String[] args) {
		
	}
}

查询

import static com.mongodb.client.model.Filters.and;
import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Filters.exists;
import static com.mongodb.client.model.Filters.gt;
import static com.mongodb.client.model.Filters.lte;

import org.bson.Document;

import com.mongodb.BasicDBObject;
import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;


public class M_Query {

	public static void query_1(){
		MongoClient client=Auth_no.getClient("127.0.0.1", 2222);
		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoDatabase db = client.getDatabase("lhy");
		MongoCollection<Document> collection = db.getCollection("lhy");
		 // 显示集合中的文档的数量
		 System.out.println(collection.count());
		
		//  查询集合中的第一个文档
		 Document myDoc = collection.find().first();
		 System.out.println(myDoc.toJson());
		
		 //遍历文档   1 
		 for (Document cur : collection.find()) {
			 System.out.println(cur.toJson());
			 }
		 
		// 遍历文档  2
		 MongoCursor<Document> cursor = collection.find().iterator();
		 try {
		 while (cursor.hasNext()) {
		 System.out.println(cursor.next().toJson());
		 }
		 } finally {
		 cursor.close();
		 }
	}
	
	/**
	 * 条件查询
	 */
	public static void query_2(){
		MongoClient client=Auth_no.getClient("127.0.0.1", 2222);
		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoDatabase db = client.getDatabase("lhy");
		MongoCollection<Document> collection = db.getCollection("lhy");

			//  根据条件获取某分文档 eq:==
			 Document myDoc = collection.find(eq("i", 71)).first();
			 System.out.println(myDoc.toJson());

			// 通过查询语句一次性获取多个数据
			 Block<Document> printBlock = new Block<Document>() {
			 @Override
			 public void apply(final Document document) {
			 System.out.println(document.toJson());
			 }
			 };
			// 获得所有大于50的
			 collection.find(gt("i", 50)).forEach(printBlock);
			// 大于50 小于 100
			 collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock);

			 //对输出文档进行排序,-1为递减,1为递增
			// 官方文档的例子有误:http:mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/#sorting-documents
			 Document myDoc1 = collection.find(exists("i"))
			 .sort(new BasicDBObject("i", -1)).first();
			 System.out.println(myDoc1.toJson());

			// 选择性输出结果中的元素,0为不显示,1为显示
			// 官方文档中的例子又不能用:http:mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/#projecting-fields
			 BasicDBObject exclude = new BasicDBObject();
			 exclude.append("_id", 0);
			  exclude.append("count", 0);
			 exclude.append("name", 1);
			 exclude.append("info", 1);
			 Document myDoc2 = collection.find().projection(exclude).first();
			 System.out.println(myDoc2.toJson());
		
	}
	public static void main(String[] args) {
	
		
	}
}

多语句执行

import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Filters.gte;

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

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.BulkWriteOptions;
import com.mongodb.client.model.DeleteOneModel;
import com.mongodb.client.model.InsertOneModel;
import com.mongodb.client.model.ReplaceOneModel;
import com.mongodb.client.model.UpdateOneModel;
import com.mongodb.client.model.WriteModel;
import com.mongodb.client.result.DeleteResult;


public class M_builk {

	/**
	 * 按顺序执行
	 */
	public static void builk_1(){
		MongoClient client=Auth_no.getClient("127.0.0.1", 2222);
		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoDatabase db = client.getDatabase("lhy");
		MongoCollection<Document> collection = db.getCollection("lhy");
	
		// 按照语句先后顺序执行
		List list=new ArrayList();
		list.add(new InsertOneModel(new Document("name", 4)));
		list.add(new InsertOneModel(new Document("name", 5)));
		list.add(new UpdateOneModel(new Document("name", 4),new Document("$set", new Document("x", 2))));
		list.add(new DeleteOneModel(new Document("name", 5)));
	
		 collection.bulkWrite(list);
		 // 获取全部文档
		 for (Document cur : collection.find()) {
		 System.out.println(cur.toJson());
		 }

		
	}
	
	/**
	 * 不按顺序执行
	 */
	public static void builk_2(){
		MongoClient client=Auth_no.getClient("127.0.0.1", 2222);
		// 获取data集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		MongoDatabase db = client.getDatabase("lhy");
		MongoCollection<Document> collection = db.getCollection("lhy");

		/**
		 * 不按先手顺序执行
		 */
		List list=new ArrayList();
		list.add(new InsertOneModel(new Document("name", 4)));
		list.add(new InsertOneModel(new Document("name", 5)));
		list.add(new UpdateOneModel(new Document("name", 4),new Document("$set", new Document("x", 2))));
		list.add(new DeleteOneModel(new Document("name", 5)));
	
		 collection.bulkWrite(list, new BulkWriteOptions().ordered(false));
		// 获取全部文档
		 for (Document cur : collection.find()) {
		 System.out.println(cur.toJson());
		 }
	}
	
	
	public static void main(String[] args) {
		builk_1();
	}
}



相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
1月前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
191 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
1月前
|
前端开发 JavaScript Java
Java打包jar运行时分离lib和jar
在`pom.xml`的`build`节点中,设置`packaging`为`jar`,并配置插件分离依赖库到`lib`目录和资源文件到`resources`目录。这样可以在运行时通过`-Dloader.path=lib,resources`加载外部依赖和资源文件,便于独立升级依赖库和修改资源文件,而无需重新打包程序。具体插件包括`maven-dependency-plugin`、`maven-resources-plugin`和`spring-boot-maven-plugin`等。
81 1
|
3月前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
1046 8
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
5月前
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
134 1
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
4月前
|
数据采集 分布式计算 Java
Kettle的Java开发环境需要什么jar包?
【10月更文挑战第24天】Kettle的Java开发环境需要什么jar包?
225 2
|
4月前
|
Java Linux Windows
如何查看已安装的 Java 版本
要查看已安装的 Java 版本,打开命令提示符或终端,输入 `java -version`,回车后即可显示当前系统中 Java 的版本信息。
1711 1
|
4月前
|
Ubuntu Java Linux
如何检查 Java 版本是否兼容
要检查Java版本是否兼容,可在命令行输入“java -version”查看当前安装的Java版本,然后对比目标应用所需的Java版本,确保其满足要求。
218 1
|
5月前
|
Java Docker 容器
java版本学习网站又添加了一个libgdx模块
java版本学习网站之前添加了docker,想了想还是再把libgdx添加进去吧。
58 3
|
6月前
|
Java
java版本详解
java版本详解
|
5月前
|
Java Maven Spring
查看springboot版本支持最高的java版本
截至最近更新,Spring Boot 3.0及以上版本支持的最高Java版本为Java 17。鉴于技术的不断演进,建议直接参考Spring Boot的官方文档获取最准确的支持信息,因为这些版本兼容性可能会随着新版本的发布而有所变化。选择与你的Spring Boot版本相匹配的Java版本,可以确保充分利用框架特性,同时保证项目的稳定性和前瞻性。
192 0

热门文章

最新文章