您的位置:首页 > 职场人生

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

2017-07-21 10:02 274 查看
1、了解mongoDB是什么

MongoDB[1]  是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB[2]  是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。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);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: