MongoDB安装和简单上手

MongoDB安装和简单上手

文章目录

  • MongoDB安装和简单上手
    • 1.简介
    • 2.主要特色
    • 3.使用场景
    • 4.MongoDB的下载安装
    • 5.MongoDB的数据库常用操作命令
      • 5.1启动或停止数据库服务命令
      • 5.2连接数据库命令
      • 5.3退出数据库命令
      • 5.4自己创建一个数据库账号
      • 5.5登录自己创建的账号
      • 5.6查看当前库中的账号
      • 5.7创建数据库
      • 5.8查看所有的数据库
      • 5.9给数据库插入数据
      • 5.10查看数据库中数据
    • 6.MongoDB在项目中使用
      • 6.1mongodb引入springboot项目
        • 6.1.1导依赖
        • 6.1.2设置配置信息
      • 6.2简单使用
        • 6.2.1创建一个测试的数据实体类
        • 6.2.2创建一个可以操作数据到数据库的类
        • 6.2.3写一个controller类来测试功能
    • 7.项目启动后测试截图

1.简介

MongoDB是基于c++开发的,是一个基于分布式文件存储的开源数据库系统。

在高负载下添加更多的节点,保证服务器的性能。

该数据库为web应用提供可扩展性的高性能数据存储解决方案。

该数据库对数据存储方式:键值对组成,类似于json

MongoDB 是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB 对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

2.主要特色

MongoDB是一个面向文档存储的数据库,操作容易。

可以在MongoDB记录中设置任何属性的索引来实现更快的排序。

可以通过本地或网络创建数据镜像,这样该数据库更具有扩展性。

负载增加,该数据库可以分布在计算机网络的其他节点上(就是分片)。

MongoDB的查询指令使用json形式。

3.使用场景

MongoDB 的适合对大量或者无固定格式的数据进行存储,比如:日志、缓存等。对事物支持较弱,不适用复杂的多文档(多表)的级联查询。

4.MongoDB的下载安装

使用这个博主的下载链接很方便速度也快

https://blog.csdn.net/jdmxi/article/details/79492049

尽量下载高一些的版本,因为低版本的要自己创建日志文件夹和数据库文件夹,高版本的会自动给你部署好。你是安装好后就有这个文件夹可跳过创建他们的步骤

我下载的是免安装的,解压后直接可用 mongodb-win32-x86_64-2012plus-4.2.18-rc0-12-gbe2c559,我这个要手动创建日志文件夹和数据库文件夹

找到安装包中的bin文件中的mongo.exe,

点击mongo.exe就可启动了(注意,该安装路径尽量不要出现中文,可能会出错

MongoDB安装和简单上手_第1张图片

这有可能会出现运行闪退情况,以下是解决方案:

一次性方案:

1)首先再D盘新建一个文件夹test

2)在mongodb/bin目录下按住shift+鼠标右键,选择在此处打开Powershell窗口,在powershell内执行命令:

 .\mongod -dbpath d:\test
此时mongod.exe程序就不会闪退了

3)双击mongo.exe程序,即可打开mongo shell,然后就可以快乐的玩耍了。

所谓一次性解决,就是在你关闭mongod窗口后,你还是得按照上面的方法启动mongod程序,比较麻烦,直接双击mongod.exe还是会闪退。


永久解决方案:

小编仔细的翻阅了官方文档,mongod程序启动时,默认存储数据的目录是D:\data\db,如果没有该目录就会闪退,所以最简单的办法就是在D盘新建目录:D:\data\db

是不是很简单呢,这样就可以直接双击mongod.exe启动MongoDB了,再双击mongo.exe就能玩耍了。

我认为比较好的方案:

通过分析可知是mongodb找不到默认的存储数据路径导致的闪退,那我们可以给他指定一个路径,不使用默认的路径就好了,具体操作在下面手动创建db文件夹后展示。

但我这个是免安装的版本,需要自己部署log日志文件夹和数据库data文件夹

MongoDB安装和简单上手_第2张图片

自己手动创建data文件夹,然后在data中创建db文件夹和log文件夹

MongoDB安装和简单上手_第3张图片

然后在log文件夹下创建mongo.log文件

MongoDB安装和简单上手_第4张图片

然后在bin文件夹下打开cmd,输入命令:

//我创建数据存放位置是D:\programfiles\MongoDBPAth\data\db

mongod --dbpath D:\programfiles\MongoDBPAth\data\db

这样就指明了mongodb的数据路径,就解决了运行闪退问题了!这就是我的解决闪退方案!
MongoDB安装和简单上手_第5张图片

然后就看到刚创建的db文件夹下有好多文件了

MongoDB安装和简单上手_第6张图片

到此处,该数据库基本可以使用了,但使用时每次都要留一下窗口,不能关,比较繁琐,可以使用配置文件解决这个问题

在bin文件夹所在的路径下,手动创建一个配置文件mongo.config

MongoDB安装和简单上手_第7张图片

该配置文件中写如下内容:

#你配置的数据存放路径
dbpath=D:\programfiles\MongoDBPAth\data\db
#你配置的日志文件存放路径
logpath=D:\programfiles\MongoDBPAth\data\log\mongo.log  

然后在bin文件夹下打开cmd,输入命令:

//注意这里写你的配置文件的路径
mongod --config D:\programfiles\MongoDBPAth\mongo.config --install --serviceName "mongodb"

在这里插入图片描述

开启mongodb数据库和关闭命令(注意我没有配置全局环境变量,所以命令只能在安装的bin文件夹下才有用!

启动命令:net start mongodb
停止命令:net stop mongodb

MongoDB安装和简单上手_第8张图片

5.MongoDB的数据库常用操作命令

在默认情况下,mongod是监听在127.0.0.1之上的,任何客户端都可以直接连接27017,且没有认证。

默认情况下,mongodb没有启用的访问控制,因此没有默认的用户或密码。

5.1启动或停止数据库服务命令

注意我没有配置全局环境变量,所以命令只能在安装的bin文件夹下才有用!

//启动命令
net start mongodb
//停止命令
net stop mongodb

5.2连接数据库命令

注意我没有配置全局环境变量,所以命令只能在安装的bin文件夹下才有用!

//进入数据库命令
mongo

MongoDB安装和简单上手_第9张图片

浏览器访问 http://localhost:27017/ 可以看到如下画面
MongoDB安装和简单上手_第10张图片

5.3退出数据库命令

exit

在这里插入图片描述

5.4自己创建一个数据库账号

//进入数据库
mongo
//创建用户管理员。
use admin
//然后按回车,再输入下面命令
//下面的admin是我创建的账号名字,adminpassword是我创建的账号密码,后边[]中的是角色设置userAdmin和userAdminAnyDatabase都是可以的,区别在于userAdmin角色是用于对单个数据库起作用,userAdminAnyDatabase角色是超级用户,对所有数据库起作用
db.createUser({ user: "admin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

MongoDB安装和简单上手_第11张图片

5.5登录自己创建的账号

use admin
db.auth("admin", "adminpassword")

MongoDB安装和简单上手_第12张图片

可以看到当账号密码验证正确会出现1,反之是0;

这里说明我的账号创建并登录成功了。

5.6查看当前库中的账号

//可以查看的库有很多,自带的有admin,test等 ,我这里查看admin库的账号
use admin
show users

MongoDB安装和简单上手_第13张图片

5.7创建数据库

//use DATABASE_NAME
//如果数据库不存在,则创建数据库,否则切换到指定数据库。
//我这里就创建一个myfirstmongo名字的数据库
use myfirstmongo
//使用db命令查看当前在那个数据库
db

MongoDB安装和简单上手_第14张图片

5.8查看所有的数据库

show dbs

MongoDB安装和简单上手_第15张图片

但发现我刚创建的数据库没有显示,这是因为该数据库还没有插入数据,不会显示,可以插入一些数据

5.9给数据库插入数据

以我刚创建的myfirstmongo数据库中插数据为例

这里{“name”:“我的第一个mongodb练习”}也可以看出mongodb的数据结构和json很像

db.myfirstmongo.insert({"name":"我的第一个mongodb练习"})

在这里插入图片描述

我们再看看数据库,发现他出现了

MongoDB安装和简单上手_第16张图片

5.10查看数据库中数据

//查询数据库中所有的集合
show collections
//查询数据库中集合中的数据
db.集合名字.find()

在这里插入图片描述

6.MongoDB在项目中使用

我这里使用springboot项目和mongodb简单的使用,连接的数据库名也就用我刚创建的myfirstmongo数据库吧

6.1mongodb引入springboot项目

6.1.1导依赖
	<dependency> 
	    <groupId>org.springframework.bootgroupId>
	    <artifactId>spring-boot-starter-data-mongodbartifactId>
	dependency> 

6.1.2设置配置信息

这里项目连接数据库的配置中账号密码有个坑!他和mysql数据库的账号不一样,我上边创建的账号是admin数据库中的账号,这里使用myfirstmongo数据库,用那个账号是连不上数据库的!我们需要在myfirstmongo数据库中也创建一个账号,操作和上边创建账号一样

MongoDB安装和简单上手_第17张图片

在application文件中

#参数解释mongodb://root(userName):root(password)@localhost(ip地址):27017(端口号)/gis(collections/数据库)


spring.data.mongodb.uri=mongodb://my:mymongo@localhost:27017/myfirstmongo
#多个 IP 集群可以采用以下配置:
#spring.data.mongodb.uri=mongodb://user:pwd@ip1:port1,ip2:port2/database

#spring boot操作mongo时添加日志查看mongodb执行语句
logging.level.org.springframework.data.mongodb.core = DEBUG

6.2简单使用

6.2.1创建一个测试的数据实体类
public class TestEntity {
    private String name;
    private String passWord;

    public TestEntity() {
    }

    public TestEntity(String name, String passWord) {
        this.name = name;
        this.passWord = passWord;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
}

6.2.2创建一个可以操作数据到数据库的类

操作mongodb主要采用依赖包中的MongoTemple类

@Component
public class TestMongoDb {
    //使用依赖中的mongodb模板类来操作
    @Resource
    public MongoTemplate mongoTemplate;

    //将实体对象存入数据库
    public void add(TestEntity testEntity){
        mongoTemplate.save(testEntity);
    }

    //根据名字查找对象
    public TestEntity findByName(String name){
        //注意这里的Query是依赖包中的类,不要引错了
        Query query=new Query(Criteria.where("name").is(name));
        TestEntity testEntity=mongoTemplate.findOne(query,TestEntity.class);
        return testEntity;
    }
    //修改对象(根据名字锁定对象修改对应密码)
    public long update(TestEntity testEntity){
        Query query=new Query(Criteria.where("name").is(testEntity.getName()));
        Update update=new Update().set("passWord", testEntity.getPassWord());
        //更新查询返回结果集的第一条
        UpdateResult result=mongoTemplate.updateFirst(query,update,TestEntity.class);
        //更新查询返回结果集的所有
        // mongoTemplate.updateMulti(query,update,UserEntity.class);
        if(result!=null)
            return result.getMatchedCount();
        else
            return 0;
    }
    //删除对象
    public void delete(String name){
        Query query=new Query(Criteria.where("name").is(name));
        mongoTemplate.remove(query,TestEntity.class);
    }

}

6.2.3写一个controller类来测试功能
@Controller
@RequestMapping("test")
//测试类
public class Test {
    @Autowired
    private  TestMongoDb testMongoDb;

    @GetMapping("/add")
    //测试写数据
    public void add(){
        System.out.println("触发");
        TestEntity testEntity=new TestEntity();
        testEntity.setName("张三");
        testEntity.setPassWord("123456");
        testMongoDb.add(testEntity);

    }
    @GetMapping("/find")
    //测试查数据
    public void find(){

        testMongoDb.findByName("张三");
    }
    @GetMapping("/update")
    //修改数据
    public void update(){

        TestEntity testEntity=new TestEntity();
        testEntity.setName("张三");
        testEntity.setPassWord("666666666");
        testMongoDb.update(testEntity);
    }
    @GetMapping("/delete")
    //删除数据
    public void delete(){

        testMongoDb.delete("张三");
    }

}

然后启动springboot项目,注意此时的mongodb也必须是处于启动状态,不然连不上!!

7.项目启动后测试截图

先用postman对添加的功能接口测试

MongoDB安装和简单上手_第18张图片

然后查看后端控制台,可以看到该add已被执行

MongoDB安装和简单上手_第19张图片

然后查看数据库中是否有张三这条数据,我这边使用的可视化界面查看的,也可以使用命令查看

MongoDB安装和简单上手_第20张图片

感悟:通过自己调通mongodb可以很直观的发现该数据库是以集合的方式来存储数据和mysql等关系型数据库不一样,他不是一张张表,而是一条条实例,这样有一个很直观的好处就是数据之间联系不大,互不干扰。

最后希望我写的文章可以帮到你

参考:

https://blog.csdn.net/jdmxi/article/details/79492049

https://www.jianshu.com/p/a2437574a4bb

https://www.cnblogs.com/ityouknow/p/6828919.html

https://blog.csdn.net/u010649766/article/details/78498130

https://www.runoob.com/mongodb/mongodb-create-database.html

你可能感兴趣的:(springboot,mongodb,数据库,nosql)