java连接MongoDB及CRUD操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/com_it/article/details/84673002

1、创建maven项目,并添加java驱动,使用的是3.9API版本

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

2、代码如下

package com.it.mongod;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.bson.Document;
import org.junit.Before;
import org.junit.Test;
import com.mongodb.Block;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Updates;
import com.mongodb.client.result.UpdateResult;
import static com.mongodb.client.model.Filters.*;//手动导入
public class Demo {

	private MongoClient mongoClient=null;
	private MongoDatabase database=null;
	private MongoCollection<Document> collection=null;
	
	@Before
	public  void init(){
		//1、创建MongoClient客户端对象
		 mongoClient = MongoClients.create("mongodb://192.168.32.135:27017");
		//2、得到数据库对象,如果mydb不存在,则创建一个
		 database = mongoClient.getDatabase("mydb");
		//3、访问集合,如果test集合不存在,则创建
		 collection = database.getCollection("test");
	}
	
	//插入数据
	@Test
	public void insert(){
		//1、插入单条文档
		Document doc = new Document("name", "MongoDB")
        .append("type", "database")
        .append("count", 1)
        .append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))
        .append("info", new Document("x", 203).append("y", 102));
		collection.insertOne(doc);
		
		//2、插入多条文档
		List<Document> documents = new ArrayList<Document>();
		for (int i = 0; i < 10; i++) {
		    documents.add(new Document("i", i));
		}
		collection.insertMany(documents);
		System.out.println("test集合中的文档数:"+collection.countDocuments());
		mongoClient.close();
	}
	
	//查询数据
	@SuppressWarnings("deprecation")
	@Test
	public void query(){
		//1、查询test集合中的第一个文档
		Document myDoc = collection.find().first();
		System.out.println(myDoc.toJson());
		
		//2、查询test集合中的所有文档
		MongoCursor<Document> cursor = collection.find().iterator();
		try {
		    while (cursor.hasNext()) {
		        System.out.println(cursor.next().toJson());
		    }
		} finally {
		    cursor.close();
		}
		/**避免使用for循环,因为如果循环提前终止,应用程序可能会泄漏游标
		 * for (Document cur : collection.find()) {
    			System.out.println(cur.toJson());
			}
		 */
		//3、获取与过滤条件匹配的单个文档
		myDoc = collection.find(eq("i", 5)).first();//查询字段为5的第一个文档
		System.out.println(myDoc.toJson());
		//4、获取与过滤条件匹配的所有文档
		Block<Document>blocks=new Block<Document>(){
			public void apply(Document document) {
				System.out.println(document.toJson());
			}
		};
		collection.find(gt("i", 6)).forEach(blocks);
		mongoClient.close();
	}
	
	//更新数据
	@Test
	public void update(){
		//1、更新单条文档
		collection.updateOne(eq("i", 8), new Document("$set", new Document("i", 888)));
		 //2、更新多条文档
		//对于小于100的所有文档,将值增加100
		 UpdateResult updateResult = collection.updateMany(lt("i", 100), Updates.inc("i", 100));
		 System.out.println(updateResult.getModifiedCount());
		 mongoClient.close();
	}
	
	//删除数据
	@Test
	public void delete(){
		//1、删除单条数据
		collection.deleteOne(eq("i", 110));
		//2、删除多条数据
		collection.deleteMany(gte("i", 100));
		
		mongoClient.close();
	}
}

3、注意:

静态内置方法需要手动导入

猜你喜欢

转载自blog.csdn.net/com_it/article/details/84673002