MongoDB快速入门

1、MongoDB简介

参考学习:https://www.yiibai.com/mongodb/mongodb_quick_guide.html

                  https://www.runoob.com/mongodb/mongodb-tutorial.html

1.1  MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。

MongoDB 2.4中新引入了V8引擎, V8 是 Google 发布的开源 JavaScript 引擎,采用 C++ 编写,在 Google 的 Chrome 浏览器中被使用。V8 引擎可以独立运行,也可以用来嵌入到 C++ 应用程序中执行。

1.2 mongodb与 mysql性能比较:

分别插入100万条记录,并对其做100个用户并发查询操作

1.3 应用范围和限制

缺点:不支持连表查询,不支持sql语句,不支持事务存储过程等,所以不适合存储数据间关系比较复杂的数据,一般主要是当做一个数据仓库来使用。

适用于:日志系统,股票数据等。

不使用于:电子商务系统等需要连多表查询的功能。

1.4 mongodb的数据体系

总结:

  1. MongoDB属于非关系型数据库,基于分布式文件存储数据库
  2. MongoDB采用C++编写,存储格式为BSON(JSON扩展格式)
  3. MongoDB支持查询、存储结构灵活

MongoDB特点(MongoDB和关系型数据库不同)

  • MongoDB是分布式数据库,存取速度比Oracle快
  • MongoDB支持查询、存储结构灵活;Oracle结构不灵活(受表结构限制)
  • MongoDB支持索引和Oracle一样,提高查询效率
  • MongoDB不支持事务,数据完整性容易破坏
  • MongoDB扩展性和灵活性比Oracle要好

2、windows下MongoDB的安装

  Mongodb官网:https://www.mongodb.com/download-center#community 
 下载 对应系统版本的程序安装包,选择“Custom”自定义 安装路径:D:\developTools\nosql\mogodb,

 默认是选择安装MongoDB compass的客户端工具,可以取消安装。。。这种安装,不需要配置服务之类的,都已经做好了,

访问:http://localhost:27017/,出现如下内容,说明安装成功....

  https://blog.csdn.net/yichuanyanyu1991/article/details/84752589

客户端工具:https://www.cnblogs.com/xuliuzai/p/9651800.html

3、常用命令

https://blog.csdn.net/piaocoder/article/details/52384756

cd  D:\developTools\nosql\mogodb\bin 运行

show dbs :显示当前所有库,显示成功。

a. 库

show dbs //查看所有库名
use xxx //使用一个库,不存在新建一个
db //当前库名
db.dropDatabase() //删除当前库

b. 集合

show collections //查看库中所有集合名
创建集合,使用插入记录命令db.xxx.insert

//创建了一个dept集合,插入一行记录
db.dept.insert({"deptno":10,"dname":"java"})
db.xxx.drop() //删除集合

c. 记录crud

 c1. 插入操作(db.xxx.insert)

       db.dept.insert({"deptno":12,"dname":"java"})

c2. 查询(db.xxx.find)

      db.dept.find() //查询dept集合所有的记录

      db.dept.find({"deptno":12}) //查询deptno=12的记录

      db.dept.find({"deptno":{$gt:16}}) //查询deptno>16的记录

     提示:>, >=, <, <=, !=符号,采用>"$gt", "$gte", "$lt", "$lte", "$ne"

c3. 更新(db.xxx.update)

      db.dept.update({"deptno":10},{"dname":"JAVA"}) //将记录全部覆盖更新

      db.dept.update({"deptno":20},{$set:{"dname":"PHP"}}) //部分更新,使用$set

c4. 删除(db.xxx.remove)

      db.dept.remove({"dname":"JAVA"}) //删除dname=JAVA的记录

      db.dept.remove({}) //删除所有记录

d. 用户管理

https://www.cnblogs.com/zhoujinyi/p/4610050.html

创建系统admin用户:

use admin
switched to db admin
> db.createUser(
...   {     user: "dba",   pwd: "dba", //用户名、密码
...        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }
...   )
Successfully added user: {
        "user" : "dba",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}

> db.auth("dba","dba")  // 验证用户登录成功
1

创建子账号:

> use test
switched to db test
> db.createUser(
... {     user: "root",   pwd: "root",
...       roles: [ { role: "readWrite", db: "test" } ] } //读写权限
... )
Successfully added user: {
        "user" : "root",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "test"
                }
        ]
}
> db.auth("root","root")
1
>

//显示所有用户

show users;

删除用户
db.removeUser("userName");

4、Java访问MongoDB

     引入mongo-java-driver-2.13.2.jar驱动包

代码实现:

package com.ssm.core.pc.controller;

import java.util.List;
import java.util.Set;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;

public class TestMongoDB {

    // 连接mongodb服务
    @Test
    public void test() throws Exception {
        MongoClient mongo = new MongoClient("localhost", 27017);
        // 获取所有库名
        List<String> dbnames = mongo.getDatabaseNames();
        for (String s : dbnames) {
            System.out.println("库名:" + s);
        }
        // 获取test库中的集合
        DB db = mongo.getDB("test");
        Set<String> colls = db.getCollectionNames();
        for (String s : colls) {
            System.out.println("dept中集合名:" + s);
        }
        // 获取dept记录
        DBCollection dept = db.getCollection("dept");
        DBCursor cursor = dept.find();
        while (cursor.hasNext()) {
            DBObject obj = cursor.next();
            System.out.println(JSON.toJSONString(obj));
        }
        // 关闭连接
        mongo.close();
    }

    // 插入文档
    @Test
    public void testInsert() throws Exception {
        MongoClient mongo = new MongoClient("localhost", 27017);
        DB db = mongo.getDB("userInfo");
        DBCollection emp = db.getCollection("emp");
        DBObject obj = new BasicDBObject();
        obj.put("empno", 30);
        obj.put("ename", "tiger");
        obj.put("sal", 5000);
        emp.insert(obj);
        mongo.close();
    }
    
    //查询
    @Test
    public void testSelect() throws Exception{
        MongoClient mongo = new MongoClient("localhost", 27017);
        DB db = mongo.getDB("userInfo");
        DBCollection emp = db.getCollection("emp");
        DBObject obj = new BasicDBObject();
        obj.put("empno", 30);
        DBCursor cursor = emp.find(obj);//empno=30 , db.emp.find({"empno":30})
        while(cursor.hasNext()){
            DBObject r = cursor.next();
            System.out.println(r.get("_id")+" "+r.get("empno")+" "+r.get("ename"));
        }
        mongo.close();
    }
    
    //更新
    @Test
    public void testUpdate() throws Exception{
        MongoClient mongo = new MongoClient("localhost", 27017);
        DB db = mongo.getDB("userInfo");
        DBCollection emp = db.getCollection("emp");
        DBObject param = new BasicDBObject();
        param.put("empno", 30);
    
        DBObject value = new BasicDBObject();
        DBObject attr1 = new BasicDBObject();
        attr1.put("ename", "TIGER");
        value.put("$set", attr1);
        emp.update(param, value);// db.emp.update({"empno":30},{$set:{"ename":"TIGER"}})
        mongo.close();
    }
    
    //删除
    @Test
    public void testDelete() throws Exception{
        MongoClient mongo = new MongoClient("localhost", 27017);
        DB db = mongo.getDB("userInfo");
        DBCollection emp = db.getCollection("emp");
        DBObject param = new BasicDBObject();
        param.put("empno", 30);
        emp.remove(param);//db.emp.remove({"empno":30});
        mongo.close();
    }
}
 

MongoDB的3.x版本Java驱动相对2.x做了全新的设计,类库和使用方法上有很大区别。例如用Document替换BasicDBObject、通过Builders类构建Bson替代直接输入$命令等

<dependencies>
    <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongo-java-driver</artifactId>
      <version>3.0.4</version>
    </dependency>
</dependencies>

https://blog.csdn.net/qq_36760753/article/details/81149077

5、spring整合mongodb

https://blog.csdn.net/liujian_01/article/details/77368846

核心步骤:

a、pom引入jar依赖

 <!-- spring整合 mongodb -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>1.10.1.RELEASE</version>
        </dependency>

b. 增加xml配置  spring-mongodb.xml

 b1. xml增加头部文件

  xmlns:mongo="http://www.springframework.org/schema/data/mongo"

    http://www.springframework.org/schema/data/mongo
    http://www.springframework.org/schema/data/mongo/spring-mongo-1.10.xsd

b2 .mongdb属性配置

c. 基本操作

mongoTemplate的常用api,自行百度学习...,这里只是简单的操作api

package com.ssm.index.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.ssm.index.entity.Student;

@Controller
@RequestMapping(value = "/index", produces = "application/json;charset=UTF-8")
public class TestMongoDB {

    @Autowired
    private MongoTemplate mongoTemplate;

    @RequestMapping(value = "/testMongodb", method = RequestMethod.POST)
    @ResponseBody
    public void testMongodb(String id) {
        Student stu1 = new Student();
        Student stu2 = new Student();
        Student stu3 = new Student();
        stu1.setId(1);
        stu1.setName("测试1");
        stu1.setSex("24");
        stu2.setId(2);
        stu2.setName("测试2");
        stu2.setSex("26");
        stu3.setId(3);
        stu3.setName("测试3");
        stu3.setSex("28");
        
        // 新增
        mongoTemplate.insert(stu2, "student");

        // 保存 会覆盖一样的数据
        mongoTemplate.save(stu1, "student");
        mongoTemplate.save(stu2, "student");
        mongoTemplate.save(stu3, "student");
        
        // 根据条件查询
        // Query query = new Query(Criteria.where("name").is("Java编程之道"));
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(2)); // id为2d 数据
        List<Student> stus = mongoTemplate.find(query, Student.class, "student");
        for (Student student : stus) {
            System.err.println("姓名:" + student.getName());
        }
        // 更新
        Update update = new Update();
        update.set("name", "更新后名称");
        mongoTemplate.upsert(query, update, Student.class, "student");
        // 删除 id为2d 数据
        mongoTemplate.remove(query, Student.class, "student");

        // 查询所有
        List<Student> students = mongoTemplate.findAll(Student.class, "student");
        for (Student student : students) {
            System.err.println("姓名:" + student.getName() + ";id:" + student.getId());
        }
    }
}


https://blog.csdn.net/qq_40986512/article/details/88970467

https://blog.csdn.net/qq_37421862/article/details/81287247

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值