MongoDB(三)入门基本操作命令

原创
2020/06/13 23:12
阅读数 254

MongoDB入门

一. 基础概念

在mongodb中是通过数据库、集合、文档的方式来管理数据,下边是mongodb与关系数据库的一些概念对比:

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

table joins

 

表连接(MongoDB不支持)

primary key

primary key

主键,MongoDB自动在每个集合中添加_id的主键

  • 1、一个mongodb实例可以创建多个数据库
  • 2、一个数据库可以创建多个集合
  • 3、一个集合可以包括多个文档。

 

 

二. 数据库操作:命令行

首先的话,可以打开命令窗口去试试

用管理员打开cmd,然后跳到对应安装目录进行启动

 

  • 查询全部数据库

show dbs

 

  • 显示当前数据库

    • 如果当前没有切换数据库,默认显示“test”

db

 

 

  • -创建/切换数据库

    • 数据库存在则切换到此数据库,不存在则创建
    • 注意:新创建的数据库不显示,需要至少包括一个集合。

use 数据库名称

 

  • 删除数据库(慎用!!!)

db.dropDatabase()

 

 

三. 集合操作:命令行

集合相当于关系数据库中的表,一个数据库可以创建多个集合,一个集合是将相同类型的文档管理起来。

 

  • 创建集合

db.createCollection(name, options)

     name: 新创建的集合名称

      options: 创建参数

 

 

  • 删除集

db.集合名称.drop()

use demo

show collections

db.student.drop()

 

  • 显示集合

show collections

 

扩展:集合创建过程可以设置参数的

在demo数据库中,创建book集合,并限定最大文档数为3

 

  • 参数capped: 如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
  • 参数size: 为固定集合指定一个最大值,以千字节计(KB)。如果 capped 为 true,必须指定size字段。
  • 参数max: 指定固定集合中包含文档的最大数量。


use demo
db.createCollection('book', { capped: true,size: 1024 , max : 3 } )

 

 

三.文档操作

mongodb中文档的格式是json格式,下边就是一个文档,

包括两个key:_id主键和name

{

"_id" : ObjectId("5b2cc4bfa6a44812707739b5"),

"name" : "传智专修学院"

}

 

注意:

 

  • 插入命令

  • 每个文档默认以_id作为主键,主键默认类型为ObjectId(对象类型)
  • mongodb会自动生成主键值。

db.集合名称.insert(document)

db.student.insert({"name":"张三","age":10})

 

  • 查询命令

db.book.find()
db.book.find( {"age": 18} )                        //一个条件
db.book.find( {"age": 18,"name":"张3"} )            //多条件


--- 查询 age 为 18 所有数据,仅显示name的值
db.book.find( {"age": 18} , {"name":1})


--- 查询所有数据,仅显示name的值
db.book.find( {} , {"name" : 1} );

 

 

  • 更新文档

  • 命令格式

db.collection.update(

<query>,

<update>,

<options>

)

query:查询条件,相当于sql语句的where

update:更新文档内容

options:选项

 

 

  • 替换文档

-- 将符合条件 "name":"张三"的第一个文档替换为{"name":"张3","age":21}。

db.student.update({"name":"张三"},{"name":"张3","age":21})

 

-- 查询 age = 18 信息,将第一条替换  {name: 张三 }
db.book2.update({ "age": 18 },{ "name" : "张三" })

 

  • $set修改器

    • 使用$set修改器指定要更新的key,key不存在则创建,存在则更新。

db.student.update({"name":"张3"},{$set: {"name":"张33"} })

 

db.student.update({"name":"张33"},{$set: {"sex":"男"} })

 

 

 

  • multi替换所有

    • multi:false表示更新第一个匹配的文档,true表示更新所有匹配的文档。

db.student.update({"name":"张三"},{$set:{ "age":15}},{multi:true})

 

 

四.删除文档

db.集合名称.remove(<query>)

query:删除条件,相当于sql语句中的where

 

  • 删除符合条件的文档

db.student.remove({"name":"张33"})

 

  • 通过id删除

db.student.remove({"_id" : ObjectId("5edcfb4cb7376427b4111714")})

 

  • 删除所有文档

db.student.remove({})

 

 

五. 用户操作:命令行

  • 创建用户

  • 语法格式:

db.createUser({

user: "<name>",

pwd: "<cleartext password>",

customData: { <any information> },

roles: [

{ role: "<role>", db: "<database>" } | "<role>",

...

]

})

-- 创建root用户,角色为root

use admin

db.createUser({

user:"root",

pwd:"root",

roles:[{role:"root",db:"admin"}]

})

注意:

你想在哪个数据库下创建,就首先use 哪个数据库 ,然后再进行命令操作 

  • 内置角色

角色分类

取值

描述

超级用户角色

root

 

数据库用户角色

read

 

readWrite

 

数据库管理角色

dbAdmin

 

dbOwner

 

userAdmin

 

集群管理角色

clusterAdmin

 

clusterManager

 

hostManager

 

clusterMonitor

 

备份恢复角色

backup

 

restore

 

所有数据库角色

readAnyDatabase

 

readWriteAnyDatabase

 

userAdminAnyDatabase

 

dbAdminAnyDatabase

 

 

  • 查询用户

  • 查询当前库下的所有用户

show users

 

 

  • 修改用户

  • 语法格式
db.updateUser(
"<username>",
{
    customData : { <any information> },
    roles : [
        { role: "<role>", db: "<database>" } | "<role>",
        ...
    ],
    pwd: "<cleartext password>"
},
writeConcern: { <write concern> }
)

 

-- 修改root用户的角色为readWriteAnyDatabase

use admin

db.updateUser("root",{roles:[{role:"readWriteAnyDatabase",db:"admin"}]})

 

 

  • .修改密码

  • 语法格式

db.changeUserPassword("username","newPasswd")

-- 修改root用户的密码为1234

use admin

db.changeUserPassword("root","1234")

 

 

  • 删除用户

  • 语法格式:

db.dropUser("用户名")

 

 

 

看完恭喜你,又知道了一点点!!!

你知道的越多,不知道的越多! 

~感谢志同道合的你阅读,  你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!!

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
2
分享
返回顶部
顶部