MongoDB学习笔记Day1

 什么是MongoDB

  MongoDB是一只非关系型数据库。和Mysql等关系型数据库最大的区别就是,Mysql存储数据,是通过表的形式来存储数据,而MongoDB是通过键值对的形式存储数据。比如数据库中需要存储一下的信息,MongoDB和Mysql的存储方式不一样:

Mysql的存储方式如下,使用行列表格的形式:

IdNameEnglishNameage
1001张三peter18
1002李四 22

MongoDB的存储方式是以文档的方式存储,使用键值对文档来存储数据(BSON,类似JSON的一种格式),这里表中的主键MongoDB提供了key为"_id":

{
    "_id": ObjectId("4152aa54d554896851423f2"),
    "Name": "张三",
    "EnglishName": "peter",
    "age": 18
}
{
    "_id": ObjectId("4152aa54d554896851423f1"),
    "Name": "李四",
    "age": 22
}

  从上面两种数据库存储方式的不一样可以发现,Mysql在存储一条数据(一行)的时候,每一个元组都需要固定的形式存储,即使不需要某个字段,Mysql也需要开辟一个存储空间来存储这个空字段(比如说如上所示的“李四”的英文名就是空),虽然这样的存储结构利于表与表之间的连接等操作,但这也是关系型数据库性能瓶颈的一个因素;而MongoDB存储是以JSON文档的形式,每条数据以灵活的方式存储,但缺点是查询效率不高,没有统一的查询方式。

  一个MongoDB 实例可以包含一组数据库DataBase,一个数据库DataBase 可以包含一组集合Collection(MongoDB中的集合概念就相当于Mysql中没有模式的表结构),一个集合可以包含一组文档Document(相当于Mysql中的一个元组,一列数据)。一个Document包含一组字段field(相当于Mysql中的一条数据中的一个字段),每一个字段都是一个key/value。

  学习MongoDB,我是照着Mysql学习的,希望有什么地方不对,请大佬指出。

安装MongoDB

  下载地址:https://www.mongodb.com/download-center#community,选择Community Server社区版本下载。

       安装的时候注意安装路径,之后配置MongoDB文件的时候会用到这个路径。比如我安装在D:\MongoDB下面。

       安装好了之后,打开资源管理器。如果是最新版本的MongoDB,有log这个文件(如果没有就新建一个log文件夹),我们在log文件夹下新建一个MongoDB.log,然后在MongoDB文件夹下新建一个配置文件mongo.conf并编写:

#数据库路径
dbpath=D:\MongoDB\data\db
#日志输出文件路径
logpath=D:\MongoDB\log\MongoDB.log
#错误日志采用追加模式
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
#端口号 默认为27017 Mysql默认端口号为3306
port=27017

完成之后具体格式如下:

此时我们需要在windows上安装MongoDB服务,管理员身份打开cmd,进入bin路径下执行如下语句:

mongod --dbpath D:\MongoDB\data\db --logpath D:\MongoDB\log\MongoDB.log --logappend --serviceName MongoDB --auth –install

注意语句中的路径不要写错了。

执行完之后,我们打开log中的MongoDB.log,可以看到

2018-08-13T11:33:50.097+0800 I CONTROL  [main] Service can be started from the command line with 'net start MongoDB'

所以在cmd中我们使用:net start MongoDB就可以启动MongoDB服务了。

启动成功之后我们在浏览器中打开:http://localhost:27017/,就可以看到MongoDB Server已经启动成功了。

连接MongoDB

cmd命令提示符进入MongoDB安装路径的bin路径,使用mongo命令连接数据库,使用exit断开数据库连接

接下来我们查看MongoDB给我们提供了哪些操作语法给我们使用(类似Mysql中的SQL语句,但其实和SQL有很大区别)。

以下为MongoDB常用的命令(有时间多学习和操作一下):

https://blog.csdn.net/qq_16313365/article/details/52313987

看过之后我们还是要实际操作一些工作中最基本的命令:

1.创建一个自己的数据库:use dbname,首先创建名为admin的数据库,在MongoDB 3.0之后,需要加入auth认证才能获取相关权限进行操作(说白了就是添加用户和指定该用户的角色和权限)。而这个权限只能在admin数据库中添加,如果没有admin数据库,就新建一个:

use admin

使用如下命令添加一个用户:

db.createUser(
   {
     user: "MasterBai",
     pwd: "huidong123",
     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
   }
)

这里role字段有如下角色和相关权限可选择:

read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

把这个MasterBai用户创建好了之后,使用auth认证(就相当于登陆):

db.auth("MasterBai","huidong123")

注意:这个auth认证的数据库环境,和新建该用户的时候,处于哪个数据库下有关。就比如说我在admin下创建了MasterBai这个用户,那么我只能在admin的数据库下进行这个auth认证,其他数据库下对MasterBai用户及逆行auth认证会报错。

我们新建先切换到MasterBaiDB数据库下(至于为什么要先切换数据库环境再创建用户,看上面注意事项)

use MasterBaiDB
db.createUser({
    user:"huidong"
    pwd:"huidong"
    roles:[{role:"readWrite",db:"MasterBaiDB"}]
})

创建成功之后呢,对huidong用户进行auth认证(因为此时我们任然处于MasterBai用户下)

db.auth("huidong","huidong")

认证成功之后,我们往MasterBaiDB中插入第一条数据:

db.MasterBaiDB.insert({"name":"张三"})

所以至此为止搞明白了,MongoDB中,数据库为大,用户在数据库之下,所有的数据操作,我们第一步,就先要切换到目标数据库,然后进行auth认证,最后再进行数据操作。

这里我为了更方面自己又加了一个角色为root的超级管理员用户。

MongoDB数据操作

好,此时我们使用刚刚创建的root用户,此时我们新建一个数据库叫做baihuidong。这个时候我们show dbs是看不到这个数据库的, 我们往里面插入一些数据:

use baihuidong
db.baihuidong2.insert({"EnglishName":"Peter"})    //这里自动新建一个baihuidong2的集合,插入相关数据,所以MongoDB里面不需要我们去新建表结构

此时show dbs已经可以看到baihuidong这个数据库了

以下为常见的数据库操作语句:

删除当前所在的数据库

db.dropDatabase()

删除集合呢?使用

db.collection.drop()

数据插入:

db.collection.insert({"a":1})
db.collection.insertOne({"b":2})
db.collection.insertMany([{"c":3},{"d":4},{"e":5}])

数据查询

db.collection.find()        //该集合所有数据

 

转载于:https://www.cnblogs.com/MasterBai2018/p/9468780.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值