Docker安装MongoDB及使用

MongoDB介绍:

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON (简称BSON)对象。字段值可以包含其他文档,数组及文档数组。

MongoDB特点:

1、MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
2、你可以在MongoDB记录中设置任何属性的索引来实现更快的排序。
3、MongoDB有很强的扩展性,海量数据处理时可以根据需要进行分片。
4、Mongo支持丰富的查询表达式。
5、Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
6、GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
7、MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
8、MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
9、MongoDB安装简单。

MongoDB数据类型:

Object  ID:Documents 自生成的 _id

String:字符串,必须是utf-8

Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)

Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)

Double:浮点数 (没有float类型,所有小数都是Double)

Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)

Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典

Null:空数据类型 , 一个特殊的概念,None Null

Timestamp:时间戳

Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)

MongoDB安装

MongoDB安装非常简单,并且支持的系统非常丰富,支持OS X 32-bit,OS X 64-bit,Linux 32-bit,Linux 64-bit,Windows 32-bit,Windows 64-bit,Solaris i86pc,Solaris 64等多个操作系统,支持语言也非常丰富C,C++,C# / .NET,Erlang,Haskell,Java,JavaScript,Lisp,node.JS,Perl,PHP,Python,Ruby,Scala

 当前软件流程采用Docker安装,我们采用Docker安装方式进行安装,安装方式如下:

#安装MongoDB容器
#-e MONGO_INITDB_ROOT_USERNAME创建管理员账号
#-e MONGO_INITDB_ROOT_PASSWORD=123456创建密码
#映射容器服务的 27017 端口到宿主机的 27017 端口
docker run -d  -p 27017:27017 --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo
#进入容器
docker exec -it mongodb /bin/bash
#登录mongo,登录的数据库是admin数据库
mongo 192.168.100.130:27017 -u 'admin' -p '123456' --authenticationDatabase 'admin'
> show dbs;查看所有数据库

权限说明

read: 只能读取指定数据库
readWrite: 能读写指定数据库
dbAdmin: 能执行管理函数,如索引创建、删除,查看统计或访问 system.profile
dbOwner: 对当前数据库有全部权限
userAdmin: 能创建、删除和管理用户
clusterAdmin: 只能在 admin 数据库中可用,能赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase: 只能在 admin 数据库中可用,能赋予用户所有数据库的读权限
readWriteAnyDatabase: 只能在 admin 数据库中可用,能赋予用户所有数据库的读写权限
userAdminAnyDatabase: 只能在 admin 数据库中可用,能赋予用户所有数据库的 userAdmin 权限
dbAdminAnyDatabase: 只能在 admin 数据库中可用,能赋予用户所有数据库的 dbAdmin 权限
root: 只能在 admin 数据库中可用。超级权限

MongoDB常用操作

 >use shop创建并切换数据库
管理员身份创建用户,一个用户可以有多个角色,每个角色管理对应的数据库
管理员创建用户sh,分配数据库shop,该用户拥有的权限dbOwner 
#账号:sh
#密码:123456
#角色:dbOwner  对当前数据库有全部权限
#管理数据库:shop
>db.createUser({ user: 'sh', pwd: '123456', roles: [ { role: "dbOwner", db: "shop" } ] });

登录数据库
>use shop切换到shop数据库
>db.auth("sh","123456") 返回1表示sh登录成功,前提是给sh用户分配了数据库shop

查看所有数据库
> show dbs;

创建文档集合(表)
> db.createCollection("item")
没有权限,需要退出当前admin用户,重新登录mongodb,切换到shop数据库,再登录


连接本地mongo数据库,直接mongo指令即可,连接其它数据库,后面跟上ip即可


查看文档集合(查看有哪些表):
> show tables;

添加文档(向表item中添加数据)
db.文档集合名称.insert(数据); _id是固定的,id值最好自己写且唯一,默认生成的无规则
> db.item.insert({_id:"No1",name:"华为Mate 40 Pro",price:8500})
> db.item.insert({_id:"No2",name:"华为Mate 40",price:6500})
> db.item.insert({_id:"No3",name:"华为Mate 40 Pro +",price:12500})

查询文档(查询指定数据表中所有数据)
> db.item.find()

分页查询(),跳过前2条记录,查询后两条记录
> db.item.find().skip(2).limit(2)

模糊查询(正则匹配):db.item.find({列名:匹配规则})
> db.item.find({name:/Pro/})
> db.item.find({name:/^华为/}) 以华为开始的

精确查询
> db.item.find({_id:"No1"})

复杂查询:
db.item.find({name:/^华为/})                     以华为开始的
db.item.find({price:{$gt:7000}})              price>7000元,$gte则表示>=
db.item.find({price:{$lt:7000}})              price<7000元,$lte则表示<=
db.item.find({price:{$ne:8500}})              price!=8500
db.item.find({_id:{$in:["No1","No3"]}})       _id包含No1 No2的数据
db.item.find({_id:{$nin:["No1","No3"]}})      _id不包含No1 No2的数据
db.item.count()				      总条数查询,count({条件})
> db.item.count({price:{$lt:9000}}) 价格小于9000的总数


修改文档(修改数据)
自增操作:db.item.update({_id:"No1"},{$inc:{price:1}})指定列修改:db.item.update({_id:"No1"},{$set:{name:"华为P40 Pro"}})
删除文档(删除数据)
> db.item.remove({_id:"No3"})

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值