IT职场中—快速入门必会技能—mongo

1、了解mongoDB是什么
MongoDB[1]  是一个基于分布式文件存储的数据库。由 C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB[2]  是一个介于 关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立 索引
2、下载 配置 连接mongoDB的工具——
MongoVUE
连接工具:
MongoVUE
下载地址:
安装之后,
点击Connect --> + 号 -->出现以下界面
可以问老大你们项目组这个mongoDB服务器 IP 用户名 密码 就可以连上 mongoDB

3、查看mongoDB存数据
双击该表MyTest就可以查看

有三种展示情况分别是:数据都是以json字符串的形式进行存储。
1、Tree View (树状)
2、Table View (表格形式)
3、Text View (文本查看)
该工具也是和oracle一样,同样可以写各种复杂的查询语句,进行查询(后续博文重点讲解)
5、我怎么用这个工具进行快速开发。能让我的程序跑起来
必然是要使用一个工具类,包含:
 创建连接、然后对应4种操作,增删该查
  LZ 使用的是maven项目:
所以 在 pom.xml文件中 添加依赖包:
                 <dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongo-java-driver</artifactId>
			<version>3.0.2</version>
		</dependency>
工具类:
import org.springframework.stereotype.Repository;
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.MongoClient;
import com.mongodb.util.JSON;
/**
 * mongoDb的基础操作
 * @author chengjie@travelsky.com
 * 2017-7-25 下午4:46:58 MongoDbDaoCURD.java
 */
@Repository
public class MongoDbDaoCURD {
	String databaseName = "cjtest";//数据库名称
	Mongo mongoClient;			   //数据库客户端
	DB db;

	public MongoDbDaoCURD() {
		super();
		mongoClient = new MongoClient("localhost", 27017);
		db = mongoClient.getDB(databaseName);
		System.out.println("db:*****************" + db);
	}

	/**
	 * 获取表(集合)
	 */
	private DBCollection getCollection(String collectionName) {
		DBCollection table = db.getCollection(collectionName);
		return table;
	}
	
	/**
	 * @author:chengjie@travelsky.com
	 * @Title: insertOne 
	 * @Description: TODO(新增一条记录) 
	 * @param collectionName  文档名
	 * @param jsonValue 字符串
	 * @throws 
	 * @date 2017-7-25 下午4:51:45
	 */
	public void insertOne(String collectionName, String jsonValue) {
		DBCollection collection = getCollection(collectionName);
		DBObject dbObject = (DBObject) JSON.parse(jsonValue);
		collection.insert(dbObject);
	}

	/**
	 * @Title: deleteAll 
	 * @Description: TODO(删除全部符合条件的数据) 
	 * @param collectionName 文档集合名
	 * @param queryMongo 查询条件的二维数组 节点名称,值
	 * @date 2017-7-25 下午4:50:37
	 */
	public void deleteAll(String collectionName, String[][] queryMongo) {
		DBCollection collection = getCollection(collectionName);
		BasicDBObject document = new BasicDBObject();
		for (String[] querys : queryMongo) {
			document.put(querys[0], querys[1]);
		}
		collection.remove(document);
	}
	
	/**
	 * @Title: find 
	 * @Description: TODO(查找数据) 
	 * @param collectionName 文档集合名
	 * @param queryMongo 查询条件的二维数组 节点名称,值
	 * @param resultMongo 查询字段的数组 节点名称
	 * @param sortMongo 排序字段的二维数组 节点名称,值(1:正序 -1:倒序)
	 * @return cursor
	 * @date 2017-7-25 下午4:49:19
	 */
	public DBCursor find(String collectionName, String[][] queryMongo, String[] resultMongo, String[][] sortMongo) {
		DBCollection collection = getCollection(collectionName);
		BasicDBObject query = new BasicDBObject();
		for (String[] querys : queryMongo) {
			query.put(querys[0], querys[1]);
		}

		BasicDBObject sort = new BasicDBObject();
		if (sortMongo != null) {
			for (String[] sorts : sortMongo) {
				sort.put(sorts[0], Integer.valueOf(sorts[1]));
			}
		}

		DBObject result = new BasicDBObject();
		DBCursor cursor;
		if (resultMongo != null) {
			for (String results : resultMongo) {
				result.put(results, 1);
			}
			cursor = collection.find(query, result).sort(sort);
		} else {
			cursor = collection.find(query).sort(sort);
		}
		return cursor;
	}
	
	/**
	 * @author:chengjie@travelsky.com
	 * @Title: update 
	 * @Description: TODO(修改数据) 
	 * @param collectionName 文档集合名
	 * @param queryMongo 查询条件的二维数组 节点名称,值
	 * @param newJsonValue 需要修改的新的json字符串
	 * @date 2017-7-25 下午4:52:25
	 */
	public void update(String collectionName, String[][] queryMongo, String newJsonValue) {
		DBCollection collection = getCollection(collectionName);
		BasicDBObject query = new BasicDBObject();
		for (String[] querys : queryMongo) {
			query.put(querys[0], querys[1]);
		}
		DBObject dbObject = (DBObject) JSON.parse(newJsonValue);
		//upsert可选。默认为false。如果为true,则表示“如果文档不存在,则创建集合。”
		//multi可选。默认为false。如果为true,则表示“更改所有符合条件的项目。”
		collection.update(query, dbObject,false,true);
	}

}

junit 测试类:
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import org.junit.Test;
import com.mongodb.DBCursor;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.travelsky.asm.dao.MongoDbDaoCURD;
public class TestMongo {
	 /**
	  * @author:chengjie@travelsky.com
	  * @Title: test_insertOne 
	  * @Description: TODO(测试对应的 增删改查) 
	  * @throws 
	  * @date 2017-7-25 下午3:14:10
	  */
	//插入一条数据,如果该表不存在,则新建一个文档
	//通常用来进行日志保存。
	@Test
	public void test_insertOne(){
		MongoDbDaoCURD mongoDb =new MongoDbDaoCURD();
		mongoDb.insertOne("test", "{'name':'cheng'}");
		mongoDb.insertOne("test", "{'name':'jie'}");
	}
	
	//删除操作
	@Test
	public void  test_delete(){
		MongoDbDaoCURD mongoDb =new MongoDbDaoCURD();
		String[][] queryMongo={{"name1","jie"}};
		mongoDb.deleteAll("test", queryMongo);
	}
	
	
	//修改操作
	@Test
	public void  test_update(){
		MongoDbDaoCURD mongoDb =new MongoDbDaoCURD();
		String[][] queryMongo={{"name","jie"}};
		mongoDb.update("test", queryMongo, "{'name1':'jie'}");
		System.out.println("修改成功");
	}
	
	//查数据
	@Test
	public void test_find(){
		System.out.println("------------");
		MongoDbDaoCURD mongoDb =new MongoDbDaoCURD();
		String[][] queryMongo={{"name","cheng"}};
		String[] resultMongo={"name"};
		String[][] sortMongo={{"_id","-1"}};
		DBCursor cur =mongoDb.find("test", queryMongo, resultMongo, sortMongo);
		String data="";
		while(cur.hasNext()){
			data=cur.next().toString();
			System.out.println("data===>"+data);
		}
	}
	
}















  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值