Mongodb入门

2019-09-25  本文已影响0人  iDevOps
简介
  1. 介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的
  2. 语法有点类似javascript面向对象的查询语言
  3. 它是一个面向集合的,模式自由的文档型数据库
  4. 实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
  5. 它的特点是高性能、易部署、易使用,存储数据非常方便
使用场景
  1. 不支持连表查询,不支持sql语句,不支持事务存储过程等
  2. 所以不适合存储数据间关系比较复杂的数据,一般主要是当做一个数据仓库来使用
下载安装

官网下载地址

└─4.2
    ├─bin
    │      bsondump.exe
    │      InstallCompass.ps1
    │      mongo.exe           # 客户端连接命令
    │      mongod.cfg          # 配置文件
    │      mongod.exe
    │      mongod.pdb          # 服务端启动命令
    │      mongodump.exe
    │      mongoexport.exe     # 数据导出命令
    │      mongofiles.exe
    │      mongoimport.exe     # 数据导入命令
    │      mongorestore.exe
    │      mongos.exe
    │      mongos.pdb
    │      mongostat.exe
    │      mongotop.exe
    ├─data   # 数据库路径
    └─log    # 日志路径
  1. 解压源码包
  2. 在bin文件夹同级目录下新建data和log.log
  3. 启动mongod --dbpath data路径 --logpath log.log路径
It looks like you are trying to access MongoDB over HTTP on the native driver port.
连接mongodb
#连接命令

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][? options]]

#参数
mongodb:// 固定前缀 
username:账号,可不填 
password:密码,可不填 
host:主机名或ip地址,只有host主机名为必填项 
port:端口,可不填,默认27017 
/database:连接某一个数据库 
?options:连接参数,key/value对

#示例
mongodb://localhost      #连接本地数据库27017端口 
mongodb://root:123456@localhost    #使用用户名root密码为123456连接本地数据库27017端口 
mongodb://localhost,localhost:27018,localhost:27019,连接三台主从服务器,端口为27017、27018、27019
C:\Program Files\MongoDB\Server\4.2\bin>mongo.exe
MongoDB shell version v4.2.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("51c1aa98-1cad-4013-8281-99f2cb6a575b") }
MongoDB server version: 4.2.0
Server has startup warnings:
2019-09-25T09:02:13.690+0800 I  CONTROL  [initandlisten]
2019-09-25T09:02:13.690+0800 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-09-25T09:02:13.690+0800 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-09-25T09:02:13.690+0800 I  CONTROL  [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

连接上之后就可以直接操作mongodb数据库了

基本概念
sql mongodb 描述
database database 数据库
table collection 表/集合
row document 行/文档
column field 字段/域
index index 索引
table joins 表lianjie /mongodb不支持
primary key primary key 主键/mongodb自动在每个集合中添加_id的主键
数据类型

null
用于表示空值或者不存在的字段,{“x”:null}
布尔值
布尔类型有两个值true和false,{“x”:true}
数值
shell默认使用64为浮点型数值。{“x”:3.14}或{“x”:3}。对于整型值,可以使用
NumberInt和NumberLong
NumberInt(4字节符号整数)或NumberLong(8字节符号整数),{“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}
字符串
UTF-8字符串都可以表示为字符串类型的数据,{“x”:“呵呵”}
日期
日期被存储为自新纪元依赖经过的毫秒数,不存储时区,{“x”:new Date()}
正则表达式
查询时,使用正则表达式作为限定条件,语法与JavaScript的同,{“x”:/[abc]/}
数组
数据列表或数据集可以表示为数组,{“x”: [“a“,“b”,”c”]}
内嵌文档
文档可以嵌套其他文档,被嵌套的文档作为值来处理,{“x”:{“y”:3 }}
对象Id
对象id是一个12字节的字符串,是文档的唯一标识,{“x”: objectId() }
二进制数据
二进制数据是一个任意字节的字符串。它不能直接在shell中使用。如果要将非utf-字符保存到数据库中,二进制数据是唯一的方式。
代码
查询和文档中可以包括任何JavaScript代码,{“x”:function(){/…/}}

文档、集合和数据库
{“name”:"sn", "age":10}
{“Name”:"sn", "age":10}
{“name”:"sn", "age":"10"}

db.集合名.insert({})  # 向集合中添加文档

db.集合名.remove({条件})(不写条件删除所有的文档)
db.user.remove({age:5})

db.集合名.find()    # 查询集合所有文档
db.集合名.findOne()   # 查询集合第一条文档
show tables   # 查看集合
db.集合名.drop()   # 删除集合
帮助
db.help()
db.集合名.help()
用户管理

在mongodb里面的用户是属于数据库的,每个数据库有自己的管理员,管理员登录后,只能操作所属的数据库。
注意:一般在admin数据库中创建的用户授予超级管理员权限,登录后可以操作任何的数据库。

> use admin
switched to db admin
> db.createUser({ user:'root', pwd:'123456', roles:[{role:'root',db:'admin'}] })
Successfully added user: {
        "user" : "root",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ]
}

内置角色:
1.数据库用户角色: read, readWrite
2.数据库管理角色: dbAdmin, dbOwner, userAdmin
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
6.超级用户角色:root

show users
db.dropUser("用户名")
db.updateUser("root",{roles:[{role:"readWriteAnyDatabase",db:"admin"}]})
db.changeUserPassword("username","newPasswd")
上一篇 下一篇

猜你喜欢

热点阅读