个人技能总结4--MongoDB在windows上安装以及java中的增删改查

1.windows下的安装创建

http://tech.it168.com/a2011/0603/1200/000001200064_2.shtml

http://blog.csdn.net/xiaoxing598/article/details/54233044

 

2.Java操作mongodb

http://www.cnblogs.com/zhwl/p/3491213.html

http://blog.csdn.net/xiaoyw71/article/details/49633831

http://blog.csdn.net/mcpang/article/details/8730849

 

 

 

一.定义,用法:

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

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。

你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。

你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。

Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。

Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。

MapReduceMap函数调用emit(key,value)遍历集合中所有的记录,将keyvalue传给Reduce函数进行处理。

Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommandmapreduce命令来执行MapReduce操作。

GridFSMongoDB中的一个内置功能,可以用于存放大量小文件。

MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。

MongoDB支持各种编程语言:RUBYPYTHONJAVAC++PHPC#等多种语言。

MongoDB安装简单。

 

二.安装创建:

 

先下载:http://www.mongodb.org/downloads

下载后安装,此处我的安装路径是默认路劲:C:\Program Files\MongoDB

打开bin目录:C:\Program Files\MongoDB\Server\3.4\bin

接下来我们创建一个存放数据的位置:自定义,我的是D:\mymongodb\data

然后以管理员身份运行命令行:

①运行命令:mongod --dbpath “D:\mymongodb\data”

②运行命令:mongod --dbpath “D:\mymongodb\data” --logpath “D:\mymongodb\logs.txt” --install --serviceName “MongoDB”

 

接着:cmd打开services.msc命令,查看服务

mongod --remove --serviceName "MongoDB"

说明已安装成功,右击启动该服务。

三.Java中操作MongoDB

a) 首先下载jMongoDB的Java驱动

  1. http://central.maven.org/maven2/org/mongodb/
  2. 选择同一个版本
  3. 点击http://api.mongodb.org/java/current/index.html 了解更多java驱动的API信息
  4. 下载一下三个文件

mongo-Java-driver-2.11.4.jar 
mongo-java-driver-2.11.4-javadoc.jar 
mongo-java-driver-2.11.4-sources.jar

通过maven依赖

<dependency>

    <groupId>org.mongodb</groupId>

    <artifactId>mongo-java-driver</artifactId>

    <version>2.11.4</version>

</dependency>

 

b) 使用:参考MongodbTest项目中的Testclass.java类以及ZSGC.java类。

  1. http://blog.csdn.net/mcpang/article/details/8730849

 

package com;

import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.Set;

import org.junit.Test;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.ServerAddress;

public class Testclass{

public static void main(String[] args) throws UnknownHostException {
//方式一:直接连接单一mongodb服务器(注意这种方式不会自动发现mongodb集群中的主服务器)
MongoClient mongoClient1 = new MongoClient();
// Mongo mongoClient1 = new Mongo();
//方式二(指定ip):
//MongoClient mongoClient2 = new MongoClient( "localhost" );
////方式二(指定ip、端口):
//MongoClient mongoClient3 = new MongoClient( "localhost" , 27017 );
////方式三:连接到mongodb服务器集群(会自动发现主服务器)
//MongoClient mongoClient4 = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017),
// new ServerAddress("localhost", 27018),
// new ServerAddress("localhost", 27019)));

DB db = mongoClient1.getDB("local");
DBCollection users = db.getCollection("users");
/**
* DBObject代表文档,这是一个接口,java中提供了多种实现,最简单的就是BasicDBObject了
*/
DBObject user = new BasicDBObject();
user.put("name", "jimmy");
user.put("age", "34");
DBObject address = new BasicDBObject();
address.put("city", "bj");
address.put("street", "bq road");
address.put("mail", "ufpark 68#");
address.put("测试","测试结果");
/**
* 对于内嵌文档,我们需要先将内嵌文档填充后,再填充到外层文档中!
*/
user.put("address", address);
// 将该文档插入到集合中
users.insert(user);
// 从集合中查询数据,我们就查询一条,调用findOne即可
DBObject dbUser = users.findOne();
System.out.println("name" + " : " + dbUser.get("name") );
System.out.println("age" + " : " + dbUser.get("age") );
DBObject dbAddress = (DBObject)user.get("address");
System.out.println("city" + " : " + dbAddress.get("city") );
System.out.println("street" + " : " + dbAddress.get("street") );
System.out.println("mail" + " : " + dbAddress.get("mail") );
//获取到MongoDB上的所有集合,无法实现。
// Set<String> colls = db.getCollectionNames();
// for (String s : colls) {
// System.out.println(s+"dsdsfdf");
// }

//获取单一集合
//调用db的getCollection(String collectionName)方法获得单一集合
// DBCollection coll = db.getCollection("collName");
// System.out.println(coll);
}

public void creatConnect() throws Exception{
//方式一:直接连接单一mongodb服务器(注意这种方式不会自动发现mongodb集群中的主服务器)
MongoClient mongoClient1 = new MongoClient();
//方式二(指定ip):
//MongoClient mongoClient2 = new MongoClient( "localhost" );
////方式二(指定ip、端口):
//MongoClient mongoClient3 = new MongoClient( "localhost" , 27017 );
////方式三:连接到mongodb服务器集群(会自动发现主服务器)
//MongoClient mongoClient4 = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017),
// new ServerAddress("localhost", 27018),
// new ServerAddress("localhost", 27019)));

DB db = mongoClient1.getDB("local");

//获取到MongoDB上的所有集合
Set<String> colls = db.getCollectionNames();
for (String s : colls) {
System.out.println(s+"dsdsfdf");
}

//获取单一集合
//调用db的getCollection(String collectionName)方法获得单一集合
// DBCollection coll = db.getCollection("testCollection");


}


}

 

 

 

package com;

import java.util.Date;

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

public class ZSGC {

public static void main(String[] args) {
try {


//建立连接,无参默认是("localhost",27017)
Mongo mongo = new Mongo("127.0.0.1",27017);


/**** 获取数据库db ****/
// 如果数据库不存在,则创建一个
DB db = mongo.getDB("testMongoDb");
//数据库名称,密码。
// boolean ok = db.authenticate("root","root".toCharArray());
// if(ok){
// System.out.println("db connection success!");
//
// }{
// System.out.println("db connection fail !");
// }
/**** 获取集合相当于mysql的表,"user"为表名 ****/
// 如果集合不存在则创建一个
DBCollection table = db.getCollection("user");

/**** 增 ****/
// 创建一个文本来存储key,value
BasicDBObject document = new BasicDBObject();
document.put("name", "mkyong");
document.put("age", 30);
document.put("createdDate", new Date());
table.insert(document);

/**** 查 ****/
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "mkyong");

DBCursor cursor = table.find(searchQuery);

while (cursor.hasNext()) {
System.out.println(cursor.next());
}

/**** 改 ****/
// 根据query查询到文本,然后修改该文本。
BasicDBObject query = new BasicDBObject();
query.put("name", "mkyong");

BasicDBObject newDocument = new BasicDBObject();
newDocument.put("name", "mkyong-updated");

BasicDBObject updateObj = new BasicDBObject();
updateObj.put("$set", newDocument);

table.update(query, updateObj);

/**** 删 ****/
//根据query查询到文本然后删除。DBCursor文本
BasicDBObject searchQuery2
= new BasicDBObject().append("name", "mkyong-updated");

DBCursor cursor2 = table.find(searchQuery2);

while (cursor2.hasNext()) {
System.out.println(cursor2.next());
table.remove(searchQuery2);
}
/**** 删除数据集 ****/
db.getCollection("user").drop();

/**** Done ****/
System.out.println("Done");

} catch (Exception e) {
e.printStackTrace();
}
}

}

posted on 2017-08-25 16:01  寻梦撑一支长蒿  阅读(178)  评论(0编辑  收藏  举报

导航

干嘛呢你,快把手拿开