Java操作MongoDB

使用Java對mongo集合文檔進行基本增刪查改操作

>添加驅動包

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

>Java基礎代碼

public class MongoConn {
	/**
	 * Filters
	 * 該過濾器類爲所有的MongoDB的查詢操作靜態工廠方法。每個方法返回BSON類型,又可以傳遞給期望一個查詢過濾器的任何方法的一個實例。
	 * eq:匹配等於指定值的值。 gt:匹配大於指定值的值。 gte:匹配大於或等於指定值的值。 lt:匹配小於規定值的值。
	 * lte:匹配是小於或等於規定值的值。 ne:匹配不等於指定值的所有值。 in:匹配任何在數組中指定的值。 nin:沒有匹配數組中的規定值。
	 */
	public static void main(String[] args) {
		// 建立連接 選擇數據庫
		MongoClient mongoClient = new MongoClient("localhost", 27017);
		MongoDatabase mymongo = mongoClient.getDatabase("mymongo");
		System.out.println("conn success!");

		// 新增集合
		mymongo.createCollection("mycoll");
		System.out.println("add coll successs!");

		// 選擇集合
		MongoCollection<Document> mycoll = mymongo.getCollection("mycoll");

		// 新增文檔
		List<Document> doclis = new ArrayList<Document>();
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("name", "zhangsan");
		map.put("age", "21");
		map.put("gender", "01");
		Document doc1 = new Document(map);
		map = new HashMap<String, Object>();
		map.put("name", "lisi");
		map.put("age", "22");
		map.put("gender", "02");
		Document doc2 = new Document(map);
		map = new HashMap<String, Object>();
		map.put("name", "wangwu");
		map.put("age", "22");
		map.put("gender", "02");
		Document doc3 = new Document(map);
		doclis.add(doc1);
		doclis.add(doc2);
		doclis.add(doc3);
		mycoll.insertMany(doclis);
		System.out.println("doc insert success!");

		// 檢索一個集合的所有文檔
		findAll(mycoll);

		// 更新文檔
		map = new HashMap<String, Object>();
		map.put("name", "newli");
		map.put("age", "22");
		map.put("gender", "02");
		Document updoc = new Document(map);
		mycoll.replaceOne(Filters.eq("name", "lisi"), updoc);
		findAll(mycoll);

		// 刪除文檔
		mycoll.deleteMany(Filters.eq("name", "zhangsan"));
		findAll(mycoll);
	}

	// 檢索一個coll的所有doc
	public static void findAll(MongoCollection<Document> coll) {
		FindIterable<Document> find = coll.find();
		MongoCursor<Document> iterator = find.iterator();
		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}

>複製集和分片的理解

mongo的副本集:每個節點上都有一份完整的數據備份,可以實現讀寫的分離,實現故障時的切換。
mongo的分片:將數據自動的分解爲多個“塊”,可以實現數據的水平拓展和分佈計算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章