mongoDB的介绍和相关操作(1)
mongoDBmongoDB是目前最接近关系型数据库的一种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]