当先锋百科网

首页 1 2 3 4 5 6 7

安装

  1. 下载二进制文件安装
  2. 将MongoDB的bin目录添加到path环境变量中
  3. 在MongoDB安装目录下新建db目录
    这个文件夹保存所有的数据库的信息
  4. 在MongoDB目录下创建log目录,并且在目录下创建mongodb.log文件
  5. 在MongoDB安装目录下创建文件mongodb.conf,并在文件中配置些常用信息
    #设置数据目录的路径
    dbpath = D:\MongoDB\db
    # 设置日志信息的文件路径
    logpath = D:\MongoDB\log\mongodb.log
    # 打开日志输出操作
    logappend = true
    # 不使用任何认证登录
    noauth = true
    # 设置端口
    port = 27001  
    
  6. 启动MongoDB数据库
    6.1 mongod
    6.2 mongod -f D:\MongoDB\mongodb.conf
  7. 进入MongoDB数据库
    7.1 mongo
    7.2 =mongo --port=27001==
  8. 查看所有数据库
    8.1 show databases
  9. 切换数据库
    9.1 use 数据库名称

  1. 查看、创建一个集合
    10.1 查看集合 show collections;
    10.2 db.createCollection(“集合名称”)
  2. 给集合中添加数据
    11.1 db.集合名称.insert();
    范例 db.dept.insert({“deptNo”:“10”,“deptName”:“研发部”,“loc”:“E3F5”});
  3. 查看集合
    12.1 db.集合名称.find({若干条件})
    范例 db.dept.find();
    12.1 查看集合一条数据 db.集合名称.findOne();
    范例 db.dept.findOne();
    注意: 在mongodb中绝对不可能存在有查看集合结构的操作(类是关系数据中表结构)

  1. 删除数据
    13.1 删除集合中的数据
    语法 db.集合名称remove({条件});
    范例 db.dept.remove({"_id" : ObjectId(“57a20ee0ba454a1194ac44ac”)});
    13.2 删除集合
    语法 db.集合名称.drop()
    范例 db.dept.drop();
    13.3 删除数据库
    语法 db.dropDatabase();
    注意 表示删除当前所在的数据库,所以必须先切换到数据库下才能够删除次数据

  1. 更新集合
    14.1 db.集合名称.update(更新的ID,更新数据);
    范例
    var deptDate ={
        "deptno" : 20, 
        "name" : "秘书部", 
        "loc" : "宝安", 
        "count" : 20,
        "avg":18
    };
    db.dept.update({"_id" : ObjectId("57a21023ba454a1194ac44ad")},deptDate);   
    

数据增加

  1. 插入集合数据
    范例
    db.dept.insert([
    {
        "deptNo":20,
        "deptName":"赵云",
        "age":18
    },
    {
        "deptNo":30,
        "deptName":"张飞",
        "age":19
    },
    {
        "deptNo":50,
        "deptName":"关羽",
        "age":30
    }
    ]);  
    
  2. 批量插入数据
    2.1 批量数据可以采用JavaScript来实现
    for(var i = 100;i<10100;i++){
        db.dept.insert({"deptNo":i,"deptName":"关羽-"+i});
    }   
    

数据查询操作

  1. db.集合名称.find({查询条件}[,{设置显示的字段}]);
    db.dept.find({"_id" : ObjectId("57a34adceb779c50e1e9ddd9")});
db.dept.find({"_id" : ObjectId("57a34adceb779c50e1e9ddd9")},{"_id":0,"deptName":1});

说明 字段显示为1,不显示为0,默认是1
2. 数据格式显示(漂亮显示)
db.dept.find().pretty();
需要列多的时候才有效果
3. db.depte.findOne();

关系运算

  1. Mongodb中的关系有 大于( g t ) , 小 于 ( gt),小于( gt),(lt),大于等于( g t e ) , 小 于 等 于 ( gte),小于等于( gte),(lte),不等于( n e ) , 等 于 ( ne),等于( ne),(eq),
db.students.insert([
    {"name":"关羽","sex":"男","age":18,"score":89,"address":"中国钓鱼岛"},
    {"name":"赵云","sex":"男","age":20,"score":100,"address":"中国深圳"},
    {"name":"黄忠","sex":"男","age":23,"score":98,"address":"中国西沙群岛"},
    {"name":"张飞","sex":"男","age":32,"score":60,"address":"中国南海"},
    {"name":"陆逊","sex":"男","age":18,"score":50,"address":"中国西海"},
    {"name":"黄盖","sex":"男","age":30,"score":100,"address":"中国东海"},
    {"name":"盖聂","sex":"男","age":30,"score":78,"address":"中国渤海"},
    {"name":"项羽","sex":"男","age":25,"score":66,"address":"中国北京"},
    {"name":"天明","sex":"男","age":20,"score":52,"address":"中国上海"},
    {"name":"韦庄","sex":"男","age":35,"score":63,"address":"中国洞庭湖"},
    {"name":"刘邦","sex":"男","age":40,"score":77,"address":"中国长江"},
    {"name":"韩信","sex":"男","age":39,"score":99,"address":"中国黄河"},
    {"name":"高月","sex":"女","age":18,"score":90,"address":"中国泰山"},
    {"name":"端木蓉","sex":"女","age":15,"score":88,"address":"中国华山"},
    {"name":"秦始皇","sex":"男","age":25,"score":100,"address":"中国岳阳"}
]);
db.students.insert({"name":"小明","sex":"男","age":18,"score":89,"address":"中国钓鱼岛","course":["数学","英语","政治"]});
db.students.insert({"name":"小西","sex":"男","age":18,"score":89,"address":"中国钓鱼岛","course":["化学","数学","政治"]});
db.students.insert({"name":"寒梅","sex":"男","age":18,"score":89,"address":"中国钓鱼岛","course":["数学","英语","政治","生物"]});
db.students.insert({"name":"小磊","sex":"男","age":18,"score":89,"address":"中国钓鱼岛","course":["数学","英语","政治","化学","劳动"]});

1.1 查询姓名是张飞的信息
db.students.find({“name”:“张飞”}).pretty();
注意: 在所有关系逻辑操作中只有相等才是如上写法,其他的判断都需要嵌套子JSON
1.2 查询年龄大于20的信息
语法 db.collection.find({ “field” : {KaTeX parse error: Expected 'EOF', got '}' at position 11: gt: value }̲ } ); ==…gt":20}}).pretty();

  1. in 和 not in ($in $nin)
    2.1 语法db.collection.find( { "field" : { $in : array } } );
    2.2 范例 db.students.find({"age" : { $in : [35,20,15,18] } } );

逻辑运算符

逻辑运算符:与( a n d ) , 或 ( and),或( and),(or),非( n o t , not, not,nor)

  1. and
    查询年龄在20~30之间的信息
    语法
    范例 db.students.find({"age" : {"$gt" : 20,"$lt":30}}).pretty();
    and是最简单的操作,只需要通过,分割条件即可

  2. or
    db.students.find({"$or":[{"age" : {"$lt":50}},{"score":{"$gt":80}}]}).pretty();


  3. db.students.find({"$nor":[{"age" : {"$lt":18}},{"score":{"$gt":80}}]}).pretty();

  4. 求模
    语法 {"$mod":[数字,余数]}
    查找年龄是20的倍数
    范例 db.students.find({"age":{"$mod":[20,0]}});

  5. 数组查询
    在Mongodb中支持数组的保存,针对数组数据进行判断,可以使用 a l l , ∗ ∗ , ∗ ∗ all,**,** all,,size, s l i c e ∗ ∗ , ∗ ∗ slice**,** slice,elemMatch
    范例 查询同时是参加语文和数学课程的学生

    db.students.find({"course":{"$all":["数学","英语"]}});   
    db.students.find({"course":{"$size":3}});   
    db.students.find({"age":18},{"course":{"$slice":1}}).pretty();   
    db.students.find({"age":18},{"course":{"$slice":[1,2]}}).pretty();
     
    
    

    {"$slice":[1,2]} —> [1,2]表示跳过一个,返回2个

JAVA 操作MongoDB

  1. MongoDB 3 和三以前的操作方式不一样
  2. MongoDB 3以前的操作方式如下
    1. 添加Jar包
    <!--mongodb驱动-->
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.2.8</version>
    </dependency>
    <!--spring-mongodb驱动-->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>1.8.2.RELEASE</version>
    </dependency>
    
    2. 设置要练级的额数据库的主机名称与端口号  
        MongoClient client = new MongoClient("localhost",27001);
    3. 连接数据库
        DB db = client.getDB("haoya");
    4. 进行数据库的用户名与密码验证
        db.authenticate("","".toCharArray());
        
        //获得说有的集合
        String[] list = db.getCollection();
        
        //获得指定的集合
        DBBCollection col = db.getCollection("集合名称");
        
        //设置查询条件
        DBObject cond = BasicDBObject();
        cond.put("depton",new BasicDBObject("$gte",1000).append("$lte",2000));
        
        //获得集合的全部类容
        //DBCursor cursor = col.find();
        //分页获得数据
        //DBCursor cursor = col.find().skip(0).limit(20);
       
        DBCursor cursor = col.find(cond).skip(0).limit(20);
        while(cursor.hasNext()){
            //得到每一行的数据
            DBObject obj = cursor.next();
            
            System.out.println("部门编号:" + obj.get("deptno"));
            
        }
        //关闭数据库
        client.close();