1. 程式人生 > >java連線MongoDB及CRUD操作

java連線MongoDB及CRUD操作

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、注意:

靜態內建方法需要手動匯入