使用maven項目簡單操做mongo數據庫

1.添加pom依賴

<dependencies>
  <dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.2.2</version>
  </dependency>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
  </dependency>java

</dependencies>mongodb

2.對原聲代碼作簡單封裝



package mongo.ref; import java.util.ArrayList; import java.util.List; import org.bson.BsonDocument; import org.bson.Document; import org.bson.conversions.Bson; 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.result.UpdateResult; public class MongoDb { private static MongoCollection<Document> collection; private static MongoCollection<BsonDocument> bsonCollection; private static MongoClient client =null; private static MongoDatabase db =null; /** * 連接數據庫 * * @param databaseName * 數據庫名稱 * @param collectionName * 集合名稱 * @param hostName * 主機名 * @param port * 端口號 */ public static void connect(String databaseName, String collectionName, String hostName, int port) { client = new MongoClient(hostName, port); db= client.getDatabase(databaseName); collection = db.getCollection(collectionName); System.out.println(collection); } public static void bsonConnect(String databaseName, String collectionName, String hostName, int port) { client = new MongoClient(hostName, port); db= client.getDatabase(databaseName); bsonCollection = db.getCollection(collectionName,BsonDocument.class); System.out.println(bsonCollection); } /** * 關閉鏈接 */ public static void closeClient(){ if (client != null) { client.close(); } } /** * 插入一個文檔 * * @param document * 文檔 */ public static void insert(Document document) { collection.insertOne(document); } /** * 插入一個文檔 * * @param document * 文檔 */ public static void insertBsonDocument(BsonDocument document) { bsonCollection.insertOne(document); } /** * 查詢全部文檔 * * @return 全部文檔集合 */ public static List<Document> findAll() { List<Document> results = new ArrayList<Document>(); FindIterable<Document> iterables = collection.find(); MongoCursor<Document> cursor = iterables.iterator(); while (cursor.hasNext()) { results.add(cursor.next()); } return results; } /** * 根據條件查詢 * * @param filter * 查詢條件 //注意Bson的幾個實現類,BasicDBObject, BsonDocument, * BsonDocumentWrapper, CommandResult, Document, RawBsonDocument * @return 返回集合列表 */ public static List<Document> findBy(Bson filter) { List<Document> results = new ArrayList<Document>(); FindIterable<Document> iterables = collection.find(filter); MongoCursor<Document> cursor = iterables.iterator(); while (cursor.hasNext()) { results.add(cursor.next()); } return results; } /** * 更新查詢到的第一個 * * @param filter * 查詢條件 * @param update * 更新文檔 * @return 更新結果 */ public static UpdateResult updateOne(Bson filter, Bson update) { UpdateResult result = collection.updateOne(filter, update); return result; } /** * 更新查詢到的全部的文檔 * * @param filter * 查詢條件 * @param update * 更新文檔 * @return 更新結果 */ public static UpdateResult updateMany(Bson filter, Bson update) { UpdateResult result = collection.updateMany(filter, update); return result; } /** * 更新一個文檔, 結果是replacement是新文檔,老文檔徹底被替換 * * @param filter * 查詢條件 * @param replacement * 跟新文檔 */ public static void replace(Bson filter, Document replacement) { collection.replaceOne(filter, replacement); } /** * 根據條件刪除一個文檔 * * @param filter * 查詢條件 */ public static void deleteOne(Bson filter) { collection.deleteOne(filter); } /** * 根據條件刪除多個文檔 * * @param filter * 查詢條件 */ public static void deleteMany(Bson filter) { collection.deleteMany(filter); } }

  

 3.簡單crud操做數據庫

package mongo.ref;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.bson.BsonDocument;
import org.bson.Document;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.mongodb.client.result.UpdateResult;

public class MongoTest {
	@Before
	public void before() {
		MongoDb.connect("test", "staff", "192.168.50.130", 27017);
		MongoDb.bsonConnect("test", "staff", "192.168.50.130", 27017);
	}

	@Test
	public void testInsert() {
		Document document = new Document();
		document.append("name", "gu").append("gender", "male");
		MongoDb.insert(document);
	}
	
	@Test
	public void testInsertMap() {
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("name", "lifeix");
		map.put("gender", "undefinded");
		Document document = new Document(map);
		MongoDb.insert(document);
	}
	
	@Test
	public void testInsertJson() {
		String json ="{'name':'neoyin','gender':'male','avatar':'/444.jpg'}";
		BsonDocument document = BsonDocument.parse(json);
		MongoDb.insertBsonDocument(document);
	}
	
	@Test
	public void testInsertJsonHaveChild() {
		String json ="{'name':'nick','gender':'male','avatar':'/1.jpg','teacher':[{'id':'0001','name':'gcc','age':'28'},{'id':'002','name':'gcc2','age':'27'}],'score':10}";
		BsonDocument document = BsonDocument.parse(json);
		MongoDb.insertBsonDocument(document);
	}

	@Test
	public void testFindAll() {
		List<Document> results = MongoDb.findAll();
		for (Document doc : results) {
			System.out.println(doc.toJson());
		}
	}

	@Test
	public void testFindBy() {
		Document filter = new Document();
		filter.append("name", "wang");
		List<Document> results = MongoDb.findBy(filter);
		for (Document doc : results) {
			System.out.println(doc.toJson());
		}
	}
	/**
	 *  條件表達式
	 *  $ge(>) $get(>=) $lt(<) $lte(<=) $ne(<>) $in $nin $all $exists
	 *  $or $nor $where $type等等
	 */
	@Test
	public void testFindByExpression() {
		Document expression = new Document();
		expression.append("score", new Document("$gte", 5));
		List<Document> results = MongoDb.findBy(expression);
		for (Document doc : results) {
			System.out.println(doc.toJson());
		}
	}
	
	@Test
	public void testUpdateOne() {
		Document filter = new Document();
		filter.append("gender", "male");

		// 注意update文檔裏要包含"$set"字段
		Document update = new Document();
		update.append("$set", new Document("gender", "female"));
		UpdateResult result = MongoDb.updateOne(filter, update);
		System.out.println("matched count = " + result.getMatchedCount());
	}

	@Test
	public void testUpdateMany() {
		Document filter = new Document();
		filter.append("gender", "female");

		// 注意update文檔裏要包含"$set"字段
		Document update = new Document();
		update.append("$set", new Document("gender", "male"));
		UpdateResult result = MongoDb.updateMany(filter, update);
		System.out.println("matched count = " + result.getMatchedCount());
	}

	@Test
	public void testReplace() {
		Document filter = new Document();
		filter.append("name", "wang");

		// 注意:更新文檔時,不須要使用"$set"
		Document replacement = new Document();
		replacement.append("value", 123);
		MongoDb.replace(filter, replacement);
	}

	@Test
	public void testDeleteOne() {
		Document filter = new Document();
		filter.append("value",123);
		MongoDb.deleteOne(filter);
	}

	@Test
	public void testDeleteMany() {
		Document filter = new Document();
		filter.append("gender", "male");
		MongoDb.deleteMany(filter);
	}
	
	@After
	public void testCloseClient(){
		MongoDb.closeClient();
	}

}

  4.查看日誌express

相關文章
相關標籤/搜索