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

本文使用的是最新的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();
	}
}
时间: 2024-09-18 06:49:47

mongdb drivar for java 3.0版本之mongo-java-driver-3.0.0.jar 使用的相关文章

甲骨文将推出Java EE 7版本扩展对HTML 5的支持

甲骨文全球大会,2012 年 10 月 2 日--在2012 JavaOne大会上,甲骨文展示了 Java平台企业版 (Java Platform, Enterprise http://www.aliyun.com/zixun/aggregation/29806.html">Edition,Java EE) 的最新开发进展,并针对即将推出的Java EE 7 版本进行了讨论. 越来越多的开发者采用Java EE,而且超过5000万用户下载了Java EE组件,从而使其成为最受开发人员欢迎的

ios 3.0版本支持ipv6吗?要不能上不了appstore的

问题描述 我看到2.0版本已经支持ipv6了啊,3.0版本没看到,难不成3.0的都要死翘翘吗另:我前面的设置帧率的问题也没人管了 解决方案 3.X支持IPV-6的最新版本:最晚周六,预计明天发版

中移动研究院公布OPhone2.0版本细节

11月20日消息,中国移动研究院公布了OPhone 2.0版本的细节,在OPhone 2.0上,多媒体以及商务功能都有所增强,并且还会一起提供OPhone可视化开发工具.下面是OPhone 2.0的具体细节: 媒体娱乐方面,OPhone 2.0支持更高像素.更多拍照效果:集成新的游戏引擎. 商务办公方面,支持Office文档编辑:整合日历与通信模块. 互联网方面,支持浏览器Flash 10插件.支持RSS. 操作体验方面,主屏幕支持更多的桌面快捷方式.更方便打造个性化桌面:支持更多的数据备份.备

SiteServer CMS 宣布开源并推出全新 5.0 版本

SiteServer CMS 是一款拥有十年历史与广泛知名度的CMS系统,今天迈出了自成立以来的最具跨越性的一步,宣布开源并推出全新5.0版本. SiteServer CMS 团队对5.0 版本进行了大刀阔斧的改造,从内到外一切焕然一新: 用户中心代码全部重写,不再沿用 ASP.NET,而是转用 JavaScript 和 API 调用,采用ReactJS 与Restful API来完成所有功能,使用户中心成为单页应用,这意味着更快速.更实时.响应更灵敏. 全面支持MySQL数据库,作为当今最流行

微信升级:对5.0版本进行修复 突出游戏和支付

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 DoNews 8月28日消息 (记者 张琳)28日,微信发布了最新的5.0.1.0版本,对此前微信5.0版本中存在的一些问题作出了修复和整合. 根据观察,微信5.0.1.0 版本修正了从第三方APP进入微信,音乐停止播放的问题.除此之外,在本版本中还增加了一些表情. 据了解,微信5.0.1.0版本(For ios)功能与微信5.0版本相同,都

学JAVA必读!你没学好JAVA是因为?

太多人说JAVA不好学那是因为不明确如何学习Java? 本篇文章可以说是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领域其他技能的学习. Java - 近10年来计算机软件发展过程中的传奇,其在众多开发者心中的地位就如"屠龙刀"."倚天剑". Java是个平台,我只想说说我对学好Java的一点看法,希望对初学者有所帮助. 1思考一下学习Java之前,先别急,静下心来好好想想: 1)你对学习Java是否有兴趣? 2)你是否能静下

WebSphere Application Server V7.0新特性及各Java EE标准版本支持之对比

WebSphere Application Server V7.0新特性及各Java EE标准版本支持之对比 Application Server Network Deployment, Version 7.0 Operating Systems: AIX, HP-UX, i5/OS, Linux, Solaris, Windows, z/OS Specifications and API documentation 对比的WebSphere版本如下: Version 7.0 Version 6

Cassandra杀回数据库排行Top 10,及需求Java 7的2.0版本

在MySQL被Oracle收购后,业内对这个开源数据库的议论就从未停止,对于PostgreSQL将取而代之成为最人气开源数据库的声音也从未停歇.然而从DB-Engines排行榜来看,PostgreSQL与MySQL之间的差距远不只是"几层楼"那么高(PostgreSQ得分不到MySQL的零头).着眼整个排行榜上的193个数据库,我们会发现NoSQL数据库已占大半江山,榜上有名的传统关系型数据库管理系统仅余75个. 上图为9月份最新的排行,在Oracle稳坐头把交椅的同时,MySQL与M

将Java Studio Creator 2的项目转换为NetBeans IDE 6.0项目

在你使用本教程之前, 你需要在你的系统上安装 NetBeans IDE 6.0 的 Web 功能模块 (Web & Java EE 或者 Full install) , 在 NetBeans IDE 6.0 下载页面 可以下载. 使自己熟悉IDE 的基本部分.(注意, 比如有些窗口在 NetBeans 中 和Java Studio Creator 中的位置是不同的.) 在此教程中的所有 步骤都是基于一个使用了 JSF 1.1 和 J2EE 1.4 的 Java Studio Creator 项目