IT职场中—快速入门必会技能—mongo
2017-07-21 10:02
274 查看
1、了解mongoDB是什么
MongoDB[1] 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB[2] 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
2、下载 配置 连接mongoDB的工具——MongoVUE
连接工具:
MongoVUE
下载地址:
http://download.csdn.net/detail/u010050174/9906330
安装之后,
点击Connect --> + 号 -->出现以下界面
可以问老大你们项目组这个mongoDB服务器 IP 用户名 密码 就可以连上 mongoDB
3、查看mongoDB存数据
双击该表MyTest就可以查看
有三种展示情况分别是:数据都是以json字符串的形式进行存储。
1、Tree View (树状)
2、Table View (表格形式)
3、Text View (文本查看)
该工具也是和oracle一样,同样可以写各种复杂的查询语句,进行查询(后续博文重点讲解)
5、我怎么用这个工具进行快速开发。能让我的程序跑起来
必然是要使用一个工具类,包含:
创建连接、然后对应4种操作,增删该查
LZ 使用的是maven项目:
所以 在 pom.xml文件中 添加依赖包:
工具类:
junit 测试类:
MongoDB[1] 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB[2] 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
2、下载 配置 连接mongoDB的工具——MongoVUE
连接工具:
MongoVUE
下载地址:
http://download.csdn.net/detail/u010050174/9906330
安装之后,
点击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); } } }
相关文章推荐
- IT职场中—快速入门必会技能—maven2
- IT职场中—快速入门必会技能—序言
- IT职场:IT人才市场最看重的12项技能
- IT职场,技能比情商重要N倍
- IT职场,技能比情商重要N倍
- IT 职场--对商业技能的需求与日俱增
- 快速入门基础与关键:目标与方向;考证行业基础入门知识与技能————能力测试认证体系
- IT职场:IT人才市场最看重的12项技能
- IT职场:未来IT人需要具备12项技能
- IT职场:IT人才市场最看重的12项技能
- IT职场最看重的12项技能
- IT职场,技能比情商重要N倍
- 最近一些朋友问我,临近快毕业了专业不对口,想转行看到IT行业就业前景不错,但是编程语言众多不了解,不知道哪门语言能够快速入门掌握,短期能让我找到工作
- Java快速入门,从这六条技能开始
- 国际:IT 职场--对商业技能的需求与日俱增
- Java快速入门,从这六条技能开始
- 入门必看:未来IT人才市场最热门的12项技能zz
- IT忍者神龟之Maven 快速入门及简单使用
- 职场经验谈:十种技能方法提高IT人薪酬
- Java快速入门_从这六条技能开始