java連線MongoDB及CRUD操作
阿新 • • 發佈:2018-12-01
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、注意:
靜態內建方法需要手動匯入