qujunxi 发表于 2013-2-7 01:53:47

mongoDB的介绍和相关操作(1)

mongoDB
 
mongoDB是目前最接近关系型数据库的一种Key-value 数据库。它支持基本的增删改查,也支持索引;但不支持事务和join操作。

mongodb和传统的关系型数据的差别,体现在设计阶段,就是设计思路的转变。使用mongodb需要更多的关注实际的业务,要考虑如何组织数据能让业务使用的更方便合理;而关系型数据库由于已经有了很多比较明确的设计方式,使用起来有据可循。

mongodb中的一些概念和传统关系型数据库的比较

mongodb          rmdb
database       database
collection       table
document       record
index             index
1.相关下载
mongdoDB  www.mongdoDB.com
管理工具rockmongo  http://code.google.com/p/rock-php/

2.mongdoDB的insert操作
 java的数据库操作接口在DBCollection中实现:
public WriteResult insert(DBObject... arr)throws MongoException; 
public final WriteResult save(DBObject jo);  
第一个方法有对应的_id主键不update
第二个方法有对应的_id主键会update
举个例子,如一个问题有n个答案。我们可以将答案作为问题的子属性存储,取问题时可以将答案一起取出,不再需要像关系型数据库进行join操作。
 
    public static DBCollection getConnection(String host,int port,String dbName)               throws UnknownHostException, MongoException{           Mongo db = new Mongo(host, port);           DBCollection coll=db.getDB(dbName).getCollection("QUESTIONS");           System.out.println(coll );           return coll;                  }   public void addData () throwsException{         BasicDBObject doc = new BasicDBObject();         doc.put("_id", "1");      doc.put("title", "title");         doc.put("contents", "contents");         doc.put("user_id", "1");         doc.put("created_at", new Date());                   List<BasicDBObject> list = new ArrayList<BasicDBObject>();      for (int i = 0; i < 3; i++) {      BasicDBObject info = new BasicDBObject();         info.put("a_user_id", "2");      info.put("a_status", 0);                info.put("a_created_at", new Date());                   list.add(info);}      doc.put("ANSWERS", list);                  DBCollection coll=getConnection(host, port, dbName);         coll.insert(doc);      } 
上面方法插入了一个问题和3个答案。
存储的内容
{   "ANSWERS": {   "0": {       "a_user_id": "2",       "a_status": 0,       "a_created_at": "Wed, 20 Apr 2011 03: 08: 22 +0000"   },   "1": {       "a_user_id": "2",       "a_status": 0,       "a_created_at": "Wed, 20 Apr 2011 03: 08: 22 +0000"   },   "2": {       "a_user_id": "2",       "a_status": 0,       "a_created_at": "Wed, 20 Apr 2011 03: 08: 22 +0000"   }},   "_id": "1",   "contents": "contents",   "created_at": "Wed, 20 Apr 2011 03: 08: 22 +0000",   "title": "title",   "user_id": "1" }  
页: [1]
查看完整版本: mongoDB的介绍和相关操作(1)