zoukankan      html  css  js  c++  java
  • mongodb安装与使用

    一.MongoDB安装和启动

    widndows和linux基本同样

    1.下载数据库,

        linux:mongodb-linux-x86_64-ubuntu1404-3.0.3.tgz

    2.解压文件,而且放置到合适的位置

        tar -vxf mongodb-linux-x86_64-ubuntu1404-3.0.3.tgz

        mv mongodb-linux-x86_64-ubuntu1404-3.0.3 /usr/local/mongodb

    3.创建必要得目录以及文件

        数据库目录:/usr/local/mongodb/data/db

        日志文件:/usr/local/mongodb/data/log/mongodb.log

        完了之后记得给目录和文件授权,否则服务开不起来.

    4.设置数据库位置以及日志位置而且开启服务:

        bin(linux)->./mongod --port 27017 --dbpath /usr/local/mongodb/data/db --logpath /usr/local/mongodb/data/log/mongodb.log

        linux下注意文件及和文件读写权限.当然开启服务还有非常多參数,不一一列举.

        bin(win)->mongod --port 27017  --dbpath "D:Program FilesMongoDBServer3.0datadb" --logpath "D:Program FilesMongoDBServer3.0datalogMongoDB.log"

    5.连接数据库:

        bin(linux)->./mongo

        bin(win)->mongo.exe

        注意:在windows下创建目录以及日志文件不再说明操作过程,非常easy.另一点是在服务启动以后,不要关闭启动服务的界面,也不能Ctrl+C,连接数据库的时候须要新起窗体.当然也能够让服务后台执行.后台执行命令:nohup ./mongod --port 27017 --dbpath /usr/local/mongodb/data/db --logpath /usr/local/mongodb/data/log/mongodb.log &

    6.通过图形界面的client连接mongodb

        windows下可选得比較多,包含robomongo,mongoVUE等等,linux下可用robomongo.直接去官网上下载然后安装就可以.robomongo的优势是能够直接在软件中敲shell命令,而且有提示;mongoVUE的优势是查询截面清晰,不用敲完整的复杂得shell命令.

    7.mongodb的其它脚本命令

        备份:mongodump/恢复:mongorestore

        导入数据:mongoimport -d dbName -c collectionName --file filePath;还有其它非常多可选參数

        导出数据:mongoexport -d dbName -c collectionName -o filePaht;还有其它非常多可选參数

        导入导出数据默认都是json格式的文件,当然为了适应和其它数据库的数据交互。可选择导入导出的文件为CVS文件。

      

    二.MongoDB的简单使用

        使用mongoDB进行CRUD操作,就是通过运行响应的shell语句。所以实质上是对shell语句的使用.首先须要了解mongoDB的几种简单对象:db,collection,document.

        db:数据库对象,等同于关系数据库中的数据库对象

        collection:集合对象,等同于关系数据库中的表

        document:文档对象。等同于关系数据库中表中的一行记录

    1、对数据库的操作:

    >db;//查看当前使用的是那个数据库

    >show dbs;//展示全部的数据库

    >use dbName;//使用某个数据库,假设数据库不存在,就创建数据库,所以创建数据库也是使用这个命令

    >db stats();//查看数据库当前状态信息

    >db.dropDatabase();//删除当前的数据库

    2、对集合的操作:

    >db.createCollection(collectionName,option);//collectionName是集合名称,option是可选參数,包含数据库大小等。

    >db.collectionName.drop();//删除集合。当中collectionName是集合的名称

    3、对文档的操作:

    >db.collectionName.insert(document);//向集合中插入数据,当中document(Json)是一个json对象或者数组

    >db.collectionName.find(condition);db.collectionName.findOne();db.collectionName.find().pertty();

    //查询记录,当中condition(Json)为过滤条件。假设不添表示全部。pertty()表示输出格式优化,find还有非常多具体的处理后面介绍。

    >db.collectionName.update(condition,updateDate);//更新记录。当中condition(Json)为过滤条件json格式。

    updateDate为待更新的数据

    //>db.mycol.update({"a":1},{$set:{"b":"B"}});将mycol集合中a字段为1的对象的b字段改为"B"

    >db.collectionName.remove(condition,justOne);//删除记录,当中condition(Json)为过滤条件。justOne(boolean)表示是否仅仅删除第一条,假设都不添,表示清空集合

    >db.collectionName.find().skip(num).limit(num);//分页查询,当中num(Number)是起始页和每页大小。

    >db.collectionName.find(condition,{Key:isHead});//投影,第二个json表示某个字段是否隐藏,isHead(0/1)表示

    >db.collectionName.find().sort({Key:upOrDown});//结果排序,key为排序keyword,upOrDown(-1/1)表示升序还是降序

    >db.collectionName.ensureIndex({key:upOrDown});//建立索引。key为索引字段。upOrDown(-1/1)表示升序还是降序

    >db.collectionName.aggregate(options);//聚集函数。options(JsonArray)有多种可选。

    //db.mycol.aggregate([{$group:{field:"$by_field",total:{$sum:1}}}]);//依照by_field字段分组,显示field列和total列

    三.Java操作MongoDB:

        在java操作mongo的时候。首先须要有jar包支持。假设使用mave,依赖例如以下:

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>1.3.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>2.11.1</version>
    </dependency>

        几个基本java对象的说明例如以下:

    Mongo:数据库连接对象

        Mongo monge = new Mongo("localhost",portl);

    DB:数据库对象

        DB db = monge.getDB("dbName");

    DBCollection:集合对象

        DBCollection collection = db.getCollection("collectionName");

    BasicDBObject:文档对象

        BasicDBObject  basicDBObject = new BaseDBObject();

    DBObject:文档对象的超类

        DBObject dbObject = (DBObject)JSON.parse("json");

    DBCursor:操作过程中的游标

        DBCursor cursor = collection.find();

        DBCursor cursor = collection.find("conditionJson");

        详细使用代码例如以下:

    @Test
    public void testMongo() throws UnknownHostException
    {
        Mongo mongo = new MongoClient("127.0.0.1", 27017);// 数据库连接
        DB db = mongo.getDB("test");// 数据库对象
        DBCollection coll1 = db.getCollection("coll1");// 获取集合对象
        DBCollection coll2 = db.createCollection("coll2", null);
        Set<String> collSet = db.getCollectionNames();
        DBObject doc1 = new BasicDBObject("a", 1);// 数据库文档对象
        doc1.put("b", "B");
        DBObject doc2 = (DBObject) JSON.parse("{"a":2,"b":"B"}");
     
        // 插入数据
        coll1.insert(doc1, doc2);
     
        // 改动数据
        DBObject update = (DBObject) JSON.parse("{"a":2,"b":"updateB"}");
        coll1.update(new BasicDBObject("a", 2), update, true, false);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("c", "updateC");
        map.put("d", 4);
        coll1.update(new BasicDBObject("a", 1), new BasicDBObject(map));
     
        // 查询文档对象
        DBObject ref = (DBObject) JSON.parse("{"b":"updateB"}");
        DBCursor cursor = coll1.find(ref);
        while (cursor.hasNext())
        {
            DBObject obj = cursor.next();
            int valuea = (Integer) obj.get("a");
            String valueb = (String) obj.get("b");
            System.out.println(valuea + "-" + valueb);
            System.out.println(obj);
        }
     
        // 删除数据
        coll1.remove(new BasicDBObject("a", 1));
        coll1.drop();// 清除数据
    }


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    time模块
    Spring注入方式及注解配置
    Spring注入值得2种方式:属性注入和构造注入
    MySQL命令行登陆,远程登陆MySQL
    通过XMLHttpRequest和jQuery两种方式实现ajax
    Linux常用命令
    ASP.NET 打包下载文件
    从用户浏览器输入url到用户看到页面结果的过程,发生了什么事情?
    冒泡排序的三种实现
    字符串编码C#
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4816020.html
Copyright © 2011-2022 走看看