MongoDB常用操作
阿新 • • 發佈:2018-12-24
Util
import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import org.bson.Document; import org.bson.conversions.Bson; import org.bson.types.BasicBSONList; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Created by PeersLee on 2017/1/30. */ public class MongoUtil { public static MongoClient client; public static MongoDatabase db; public MongoUtil(String dbName) { client = new MongoClient("127.0.0.1", 27017); db = client.getDatabase(dbName); System.out.println(dbName + "連線成功..."); } //查詢(是否存在) public boolean isDuplicate(String colName, Map<String, String> map) { // 預設不重複 boolean res = false; try { MongoCollection col = db.getCollection(colName); Document doc = new Document(); for (Map.Entry<String, String> entry : map.entrySet()) { doc.append(entry.getKey(), entry.getValue()); } FindIterable<Document> findIte = col.find(doc); MongoCursor<Document> mongoCur = findIte.iterator(); if (mongoCur.hasNext()) { // 如果有元素,則重複 System.out.println("重複..."); res = true; } } catch (Exception e) { System.err.println(e.getClass().getName() + ": " + e.getMessage()); } return res; } //插入(去重複) public void insertCol(String colName, Map<String, String> msg) { try { MongoCollection col = db.getCollection(colName); // 將msg 中的資訊寫入 Document doc = new Document(); for(Map.Entry<String, String> entry : msg.entrySet()) { doc.append(entry.getKey(), entry.getValue()); } // 建立List List<Document> docs = new ArrayList<Document>(); docs.add(doc); col.insertMany(docs); System.out.println("文件已經插入到" + colName + "..."); } catch (Exception e) { System.out.println(e.getClass().getName() + ":" + e.getMessage()); } } //獲取一條資料,並標記處理 public String findOne(String colName, Map<String, String> map, String resKey) { String res = null; try { MongoCollection col = db.getCollection(colName); // 構造查詢條件 doc Document doc = new Document(); for (Map.Entry<String, String> entry : map.entrySet()) { doc.append(entry.getKey(), entry.getValue()); } // 根據 doc(key、value)查詢 FindIterable<Document> findIte = col.find(doc); MongoCursor<Document> mongoCur = findIte.iterator(); if (mongoCur.hasNext()) { // 根據 resKey 返回欄位 res = mongoCur.next().get(resKey).toString(); System.out.println("MongoDB Return:" + res); } else { res = null; System.out.println("MongoDB Return NULL"); } } catch (Exception e) { System.err.println(e.getClass().getName() + ": " + e.getMessage()); } return res; } // 更新文件 public void updateOne(String colName, Map<String, String> getMap, Map<String, Object> setMap) { try { MongoCollection col = db.getCollection(colName); // 建立一個List,每個元素是一個比較結果 //extends ArrayList<Object> implements BSONObject List keys = new BasicBSONList(); for (Map.Entry entry : getMap.entrySet()) { keys.add(Filters.eq(entry.getKey().toString(), entry.getValue())); } // 將上面的Filters List 結合為一個Bson Bson filters = Filters.and(keys); // Document /* 1. Document(Map<String,Object> map) 2. Document(String key, Object value) 3. Document() */ col.updateOne(filters, new Document("$set", new Document(setMap))); //檢索檢視結果 System.out.println("更新成功..."); } catch (Exception e) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } // 刪除一條資料 public void deleteOne(String colName, Map<String, String> map) { try { MongoCollection col = db.getCollection(colName); Document doc = new Document(); for (Map.Entry<String, String> entry : map.entrySet()) { doc.append(entry.getKey(), entry.getValue()); } // 刪除一條資料 col.deleteOne(doc); System.out.println("成功刪除一條資料!"); } catch (Exception e) { System.err.println(e.getClass().getName() + ": " + e.getMessage()); } } }
maven
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.2</version>
</dependency></pre><br>
其他
package com.mkyong.core; import java.net.UnknownHostException; import java.util.HashMap; import java.util.Map; import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObjectBuilder; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; import com.mongodb.util.JSON; /** * Java MongoDB : Insert a Document * */ public class InsertDocumentApp { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("yourdb"); DBCollection collection = db.getCollection("dummyColl"); // 1. BasicDBObject example System.out.println("BasicDBObject example..."); BasicDBObject document = new BasicDBObject(); document.put("database", "mkyongDB"); document.put("table", "hosting"); BasicDBObject documentDetail = new BasicDBObject(); documentDetail.put("records", 99); documentDetail.put("index", "vps_index1"); documentDetail.put("active", "true"); document.put("detail", documentDetail); collection.insert(document); DBCursor cursorDoc = collection.find(); while (cursorDoc.hasNext()) { System.out.println(cursorDoc.next()); } collection.remove(new BasicDBObject()); // 2. BasicDBObjectBuilder example System.out.println("BasicDBObjectBuilder example..."); BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilder.start() .add("database", "mkyongDB") .add("table", "hosting"); BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder.start() .add("records", "99") .add("index", "vps_index1") .add("active", "true"); documentBuilder.add("detail", documentBuilderDetail.get()); collection.insert(documentBuilder.get()); DBCursor cursorDocBuilder = collection.find(); while (cursorDocBuilder.hasNext()) { System.out.println(cursorDocBuilder.next()); } collection.remove(new BasicDBObject()); // 3. Map example System.out.println("Map example..."); Map<String, Object> documentMap = new HashMap<String, Object>(); documentMap.put("database", "mkyongDB"); documentMap.put("table", "hosting"); Map<String, Object> documentMapDetail = new HashMap<String, Object>(); documentMapDetail.put("records", "99"); documentMapDetail.put("index", "vps_index1"); documentMapDetail.put("active", "true"); documentMap.put("detail", documentMapDetail); collection.insert(new BasicDBObject(documentMap)); DBCursor cursorDocMap = collection.find(); while (cursorDocMap.hasNext()) { System.out.println(cursorDocMap.next()); } collection.remove(new BasicDBObject()); // 4. JSON parse example System.out.println("JSON parse example..."); String json = "{'database' : 'mkyongDB','table' : 'hosting'," + "'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}"; DBObject dbObject = (DBObject)JSON.parse(json); collection.insert(dbObject); DBCursor cursorDocJSON = collection.find(); while (cursorDocJSON.hasNext()) { System.out.println(cursorDocJSON.next()); } collection.remove(new BasicDBObject()); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } }