最近關注大數據,天然會關注到nosql數據庫,其中固然是mongodb。java
nosql數據庫大可能是k,v數據庫,這也不是新鮮的名詞了,berkerly DB已經存在不少年了,如今屬於oracle。sql
具體k,v數據庫爲什麼比傳統數據庫優載的原理,還須要深刻了解和學習。同時二者應該是各有存在的空間。mongodb
mongodb的使用很是簡單,簡單包裝一下類以下:數據庫
1 package DBHelper; 2 3 import com.mongodb.*; 4 import com.mongodb.util.JSON; 5 6 import java.net.UnknownHostException; 7 import java.util.List; 8 9 /** 10 * Created by Weijiabin on 2014/10/29. 11 */ 12 public class MongoDB { 13 14 public MongoDB() throws UnknownHostException { 15 _mongo = new Mongo(); 16 } 17 private Mongo _mongo; 18 public DB getDb(String strDbName){ 19 return _mongo.getDB(strDbName); 20 } 21 22 public DBCollection getDbCollection(String strStrDbName, String strTableName){ 23 return getDb(strStrDbName).getCollection(strTableName); 24 } 25 26 public void add(String strDbName,String strTableName, DBObject obj){ 27 getDbCollection(strDbName,strTableName).save(obj); 28 } 29 30 public void addList(String strDbName,String strTableName, List<DBObject> objList){ 31 getDbCollection(strDbName,strTableName).insert(objList); 32 } 33 34 public int remove(String strDbName,String strTableName,DBObject obj){ 35 return getDbCollection(strDbName,strTableName).remove(obj).getN(); 36 } 37 38 public int modify(String strDbName,String strTableName,DBObject objQ,DBObject objN,boolean bUpdateAll){ 39 return getDbCollection(strDbName,strTableName).update(objQ,objN,true,bUpdateAll).getN(); 40 } 41 42 public DBObject query(String strDbName,String strTableName,DBObject objQ){ 43 return getDbCollection(strDbName,strTableName).findOne(objQ); 44 } 45 46 47 48 }
測試代碼以下:json
package DBHelper; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import org.junit.Test; import static org.junit.Assert.*; public class MongoDBTest { @Test public void testGetDb() throws Exception { MongoDB db = new MongoDB(); BasicDBObject obj = new BasicDBObject(); obj.put("name","weijiabin"); obj.put("sex","man"); obj.put("age",32); db.add("db1","users",obj); BasicDBObject objQ = new BasicDBObject("age",32); DBObject objR = db.query("db1", "users", objQ); assertEquals("weijiabin",objR.get("name")); } }
看得出來,至關的簡單和易用。直接操做json數據結構,有xml的優勢,同時比xml更適合網絡傳輸。網絡