zoukankan      html  css  js  c++  java
  • 个人技能总结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 FilesMongoDB

    打开bin目录:C:Program FilesMongoDBServer3.4in

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

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

    ①运行命令:mongod --dbpath “D:mymongodbdata”

    ②运行命令:mongod --dbpath “D:mymongodbdata” --logpath “D:mymongodblogs.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();
    }
    }

    }

  • 相关阅读:
    WPF中C#代码触发鼠标点击事件
    PHP代码实现强制换行
    C#中判断系统的架构(32位,还是64位)
    WPF的System.Windows.Threading.DispatcherTimer的使用(每隔一定的时间重复做某事)
    LINQ to Objects系列(2)两种查询语法介绍
    LINQ to Objects系列(1)相关技术准备
    常用技术社区和网站总结
    .net项目技术选型总结
    java与.net比较学习系列(7) 属性
    java与.net比较学习系列(6) 数组
  • 原文地址:https://www.cnblogs.com/ycmxm/p/6723787.html
Copyright © 2011-2022 走看看