MongoDB

应用场景

评论区

TODO 

 

docker 部署 MongoDB

version: '3'
services:
  mongo:
    image: mongo:6.0.4
    container_name: mongoDB
    restart: always
    ports:
      - 27017:27017
    volumes:
      - /data/mongodb/data:/data/db
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root
  mongo-express: # web 管理界面 初始密码:admin:pass
    image: mongo-express
    container_name: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: root
      ME_CONFIG_MONGODB_URL: mongodb://root:root@mongo:27017/

 

基本操作

// 查询所有数据库(仅限于磁盘上的,不包括内存中的)
show databases

// 查看当前正在使用的数据库
db

// 删除数据库:该命令需要先使用 use 数据库名称 命令切换到指定的数据库
db.dropDatabase()

// 创建集合:可理解为MySQL中的表
db.createCollection('集合名')

// 删除集合
db.集合名.drop()

创建数据库

// 如果数据库不存在则自动创建, 但此时只会在内存中创建数据库,只有当数据库中有集合中才会从内存落盘到硬盘中
use 数据库名称

 

CURD

// 单条记录插入, 插入的数据如果没有指定 _id,则系统会为其自动生成主键值。
db.article.insert({
    "article_id": "100001",
    "content": "写的什么鬼?",
    "user_id": "1001",
    "nickname": "许大仙",
    "like_num": NumberInt(10), # MongoDB 中的数字,默认情况下是 double 类型;如果需要存储整数,需要使用 NumberInt(整型数字) 函数。
    "create_time": new Date(),
     state: null # 如果某个字段没有值,可以赋值为 null,或者不写该字段
})


// 多条记录插入
db.article.insertMany([
    {
        "article_id": "100002",
        "content": "2写的什么鬼?",
        "user_id": "1002",
        "nickname": "许大仙2",
        "like_num": NumberInt(20),
        "create_time": new Date(),
        state: null
    },
    {
        "article_id": "100003",
        "content": "3写的什么鬼?",
        "user_id": "1003",
        "nickname": "许大仙3",
        "like_num": NumberInt(20),
        "create_time": new Date(),
        state: null
    }
])


// 查询user_id 字段为1001 的数据
db.article.find({"user_id":"1001"})


// 投影:只展示部分列
    // 只显示 user_id 和 nickname: 1 表示显示,0 表示隐藏
db.article.find({},{"user_id":1,"nickname":1})

// 将 user_id 为 1001 的文档的 like_num 设置为 1000 (只修改一个文档,即一条记录)
db.article.update({user_id:1001},{$set:{like_num:1000}})
// 批量修改
db.article.update({user_id:'1001' }, {$set:{nickname:'许大仙人'}}, {multi:true})


// 删除文档
db.article.deleteMany({user_id:'1001'})

 

索引

空间换时间

// 创建索引:1表示升序,-1 表示降序
db.agg.createIndex({name:1,age:-1})

// 查看索引
db.agg.getIndexes()


// 删除索引
db.agg.dropIndex({name:1,age:-1})

 

 

参考文章

【1】SpringBoot 集成MongoDB 基本CRUD

【2】https://juejin.cn/post/7392071148751716404#heading-1

posted @ 2024-12-10 11:55  先娶国王后取经  阅读(9)  评论(0编辑  收藏  举报