mongoDB学习记录(一)
2021/11/9 19:44:01
本文主要是介绍mongoDB学习记录(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.安装
docker-compose.yml
version: '3' services: mongodb: image: mongo:latest restart: always container_name: mongodb volumes: - /opt/mongodb/data/configdb:/data/configdb - /opt/mongodb/data/db:/data/db - /opt/mongodb/log:/var/log/mongodb ports: - 27018:27017 environment: TZ=Asia/Shanghai MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: admin
2.进入mongo容器
docker exec -it mongodb mongo admin
3.权限校验
进入admin库
use admin db.auth("admin","admin")
4.新建test数据库
use test
5.新建test数据库的用户
db.createUser({user:"test",pwd:"test123",roles:[{role:'dbAdmin',db:'test'}]})
6.创建用户的角色说明
权限(role) | 作用 |
---|---|
read | 允许用户读取指定数据库。 |
readWrite | 允许用户读写指定数据库。 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile。 |
userAdmin | 允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户。 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限。 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限。 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限。 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 |
root | 只在admin数据库中可用。超级账号,超级权限。 |
7.与关系型数据库的对比
RDBMS | MongoDB |
---|---|
Table(表) | Collection(集合) |
Column(栏) | Key(键) |
Value(值) | Value(值) |
Records / Rows(记录/列) | Document / Object(文档/对象) |
8.MongoDB中常用的几种数据类型
数据类型 | 描述 |
---|---|
string(字符串) | 可以是一个空字符串或者字符组合。 |
integer(整型) | 整数。 |
boolean(布尔型) | 逻辑值 True 或者 False。 |
double | 双精度浮点型 |
null | 不是0,也不是空。 |
array | 数组:一系列值 |
object | 对象型,程序中被使用的实体。可以是一个值,变量,函数,或者数据结构。 |
timestamp | timestamp存储为64为的值,只运行一个mongod时可以确保是唯一的。前32位保存的是UTC时间,单位是秒,后32为是在这一秒内的计数值,从0开始,每新建一个MongoTimestamp对象就加一。 |
Internationalized Strings | UTF-8 字符串。 |
Object IDs | 在mongodb中的文档需要使用唯一的关键字_id来标识他们。几乎每一个mongodb文档都使用_id字段作为第一个属性(在系统集合和定容量集合(capped collection)中有一些例外)。_id值可以是任何类型,最常见的做法是使用ObjectId类型。 |
9.插入文档(写入数据)
集合创建:如果该集合当前不存在,则插入操作将创建该集合。
在MongoDB中,存储在集合中的每个文档都需要一个唯一的**_id字段作为主键。
如果插入的文档省略_id字段,则MongoDB驱动程序会自动为_id字段生成ObjectId**。
1.单条数据写入
db.inventory.insertOne({ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" }})
2.多条数据写入
db.inventory.insertMany([ { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } }, { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } }, { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } } ])
10. 文档查询
1.获取所有
选择集合中的所有文档 要选择集合中的所有文档,请将空文档作为查询过滤器参数传递给find方法。 查询过滤器参数确定选择条件:db.inventory.find( {} )此操作对应于以下SQL语句:
SELECT * FROM inventory
2.查询条件=
db.inventory.find( { status: "D" } )
此操作对应于以下SQL语句:
SELECT * FROM inventory WHERE status = "D"
3.查询条件IN
db.inventory.find( { status: "A", qty: { $lt: 30 } } )
此操作对应于以下SQL语句:
SELECT * FROM inventory WHERE status = "A" AND qty < 30
4.查询条件OR
db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )
此操作对应于以下SQL语句:
SELECT * FROM inventory WHERE status = "A" OR qty < 30
5.查询条件LIKE
db.inventory.find( { status: "A", $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ] } )
此操作对应于以下SQL语句:
SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")
这篇关于mongoDB学习记录(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享