[NoSQL]MongoDB初体验

因为未来业务发展的一个需求里的,考虑要用到NoSql,所以做了一些预研。今天简单体验了下mongdb,感觉挺合适的,有点热血沸腾。简单记录下mongoDB的一些初体验。

mongoDB的特性有哪些?以下是官网的定义:

MongoDB (from "humongo us") is a scalable, high-performance, open source NoSQL database. Written in C++, MongoDB features:

以上定义很喜人吧,我还没有深入研究。其他的特性且不说,单是以下两个特性已经能满足我的需求了。

1.面向集合,模式自由 “面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库 (RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。

 

2.虽然是非结构化数据,但支持动态查询 。允许在任意字段赏建立索引,支持任意属性作为条件的遍历查找。

不过深入的还需要在调研。

以下记录一下体验帖,没任何技术含量,入门可参考:

 

1.安装

1.下载:http://www.mongodb.org/downloads 在上面找到你需要的版本。

2.linux下的安装

解压即可,并通过sudo mkdir -p /data/db 创建数据存储目录。

3.启动:先到mongodb安装目录的bin目录下启动mongod,然后启动一个客户端mongo即可进行操作。输入help命令就可以查到主要的命令了。逐一体验即可。

 

 

2.java客户端体验

1.还是在官网上下载java driver

2.编写代码

以下是我编写的一些插入、查找功能等代码,还是十分简单的

package test.mongodb;

import java.net.UnknownHostException;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

public class MyDB {
	DB db;
	DBCollection coll;

	MyDB(String dbName) {
		Mongo m = null;
		try {
			m = new Mongo("localhost", 27017);//创建Mongo实例
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (MongoException e) {
			e.printStackTrace();
		}

		db = m.getDB(dbName);//获取数据库
		coll = db.getCollection("foo");//数据集,类似表
	}


	/**
	 * 往数据集里插入一个文档
	 */
	public void insertDoc() {
		BasicDBObject doc = new BasicDBObject();
		doc.put("memberId", "abing3");
		doc.put("businessModel", "manufature");
		doc.put("count", 1);
		BasicDBObject info = new BasicDBObject();
		info.put("x", 203);
		info.put("y", 102);
		doc.put("attr", info);
		coll.insert(doc);
	}

	/**
	 * 往数据集里循环插入文档
	 */
	public void loopInsertDoc() {
		for (int i = 0; i < 100; i++) {
			BasicDBObject doc = new BasicDBObject();
			doc.put("memberId", "abing3"+i);
			doc.put("businessModel", "manufature");
			doc.put("count", 1);
			BasicDBObject info = new BasicDBObject();
			info.put("x", 203);
			info.put("y", 102);
			doc.put("attr", info);
			coll.insert(doc);
		}
	}

	/**
	 * 从数据集里查找一个文档
	 */
	public void findDoc() {
		DBObject myDoc = coll.findOne();
		System.out.println(myDoc);
	}
	
	/**
	 * 统计文档数
	 */
	public void countDocs(){
		System.out.println(coll.count());
	}

	/**
	 * 通过游标遍历文档
	 */
	public void iterateAccess() {
		DBCursor cur = coll.find();
		while (cur.hasNext()) {
			System.out.println(cur.next());
		}
	}
	
	/**
	 * 通过条件查找
	 */
	public void findDocWithQuery() {
		BasicDBObject query = new BasicDBObject();
		query.put("member_id", "abing37");
		DBCursor cur = coll.find(query);
		while (cur.hasNext()) {
			System.out.println(cur.next());
		}
	}
	
	/**
	 * 查询集合
	 */
	public void querySet() {
		BasicDBObject query = new BasicDBObject();
		query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30)); 
		DBCursor cur = coll.find(query);
		while (cur.hasNext()) {
			System.out.println(cur.next());
		}
	}

	/**
	 * 创建索引
	 */
	public void createIndex() {
		coll.createIndex(new BasicDBObject("memberId", 1));
	}

	//test
	public static void main(String[] args) {
		MyDB db = new MyDB("mydb");
//		db.insertDoc();
//		db.loopInsertDoc();
//		db.findDoc();
//		db.countDocs();
//		db.iterateAccess();
//		db.findDocWithQuery();
//		db.querySet();
//		db.createIndex();
	}
}

 

 

 

 

你可能感兴趣的:(mongodb,NoSQL,非结构化数据)