Ubuntu18.04安装与卸载MongoDB及基础入门

MongoDB

官网:https://www.mongodb.com/

一、安装与卸载

1.Ubuntu

官方文档:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

1.1导入包管理系统使用的公钥

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

响应 ok

1.2安装所需的类库

sudo apt-get install gnupg

1.3配置镜像源并更新

echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
sudo apt-get update

1.4安装MongoDB

sudo apt-get install -y mongodb-org  
#自动创建创建数据目录 /var/lib/mongodb和日志目录/var/log/mongodb。/etc/mongod.conf

1.5启动MongoDB

sudo service mongod start       # stop  停止   restart  重启

1.6验证MongoDB已成功启动

http://localhost:27017

结果:It looks like you are trying to access MongoDB over HTTP on the native driver port.

如果你的MongDB安装在别的主机:则将/etc/mongod.conf文件中bind_id修改为:0.0.0.0

1.7删除

sudo service mongod stop
sudo apt-get purge mongodb-org*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

二、MongoDB入门

1.基础概念

关系型数据库 MongoDB 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接(MongDB不支持)
primary key primary key 主键,MongoDB自动在没个集合中添加_id的主键

注意:

  • 一个MongDB实例可以创建多个数据库
  • 一个数据库可以创建多个集合
  • 一个集合可以包括多个文档

2.连接MongoDB

MongoDB的使用方式是客户端服务器模式,即使用一个客户端连接MongoDB数据库(服务器)。故此有一下几种连接操作方式。

2.1命令

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

mongodb: 固定前缀

username:账号,可选

password:密码,可选

host:主机名或ip地址,必填

port:端口,可不填

/database:连接某一个数据库

?options:连接参数,key/value 对

例子:

mongodb://localhost 连接本地数据库27017端口 mongodb://root:root@localhost 使用用户名root密码为root连接本地数据库27017端口 mongodb://localhost,localhost:27018,localhost:27019,连接三台主从服务器,端口为27017、27018、27019

2.2使用MongDB自带的JavaScript Shell(mongo.exe)连接

如windows环境下安装目录bin中有mongo.exe客户端程序。

2.3使用Studio3T、Navicat12.1等工具

2.4使用Java程序连接

官方文档:http://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/connect-to-mongodb/

2.4.1添加依赖
<dependency> 
    <groupId>org.mongodb</groupId> 
 <artifactId>mongo‐java‐driver</artifactId>
    <version>3.4.3</version> 
</dependency>
2.4.2测试程序
@Test public void testConnection(){ 
//创建mongodb 客户端 
MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); 
//或者采用连接字符串 
//MongoClientURI connectionString = new MongoClientURI("mongodb://root:root@localhost:27017"); 
//MongoClient mongoClient = new MongoClient(connectionString); 
//连接数据库
MongoDatabase database = mongoClient.getDatabase("test"); 
// 连接collection 
MongoCollection<Document> collection = database.getCollection("student"); 
//查询第一个文档 
Document myDoc = collection.find().first(); 
//得到文件内容 json串 String json = myDoc.toJson(); System.out.println(json); }

3.操作数据库

3.1查询数据库

查询全部数据库

show dbs 

显示当前数据库

db

3.2创建/切换数据库

use DATABASE_NAME

新创建的数据库不显示,需要至少包括一个集合

3.3删除数据库

这是删除当前数据库,需要先切换数据库

db.dropDatabase()

4.操作集合

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

4.1创建集合

db.createCollection(name, options) 
name: 新创建的集合名称 
options: 创建参数

4.2删除集合

db.collection.drop() 
例子: db.student.drop() 删除student集合

5.操作文档

5.1插入文档

mongodb中文档的格式是json格式,下边就是一个文档,包括两个key:_id主键和name

{ 
"_id" :ObjectId("5b2cc4bfa6a44812707739b5"),
"name" : "小明" 
}

插入命令

db.COLLECTION_NAME.insert(document)

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

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

注意:同一个集合中的文档的key可以不相同!但是建议设置为相同的。

5.2更新文档

命令格式

db.collection.update( 
    <query>, 
    <update>, 
    <options> 
)
query:查询条件,相当于sql语句的where 
update:更新文档内容 
options:选项
5.2.1替换文档

将符合条件 “name”:"张三"的第一个文档替换为{“name”:“李四”,“age”:10}。

db.student.update({"name":"张三"},{"name":"李四","age":10})
5.2.2$set修改器

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

将符合条件 “name”:"张三"的所有文档更新name和age的值。

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

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

5.2.3删除文档

命令格式:

db.student.remove(<query>) 
query:删除条件,相当于sql语句中的where

1)删除所有文档

db.student.remove({})

2)删除符合条件的文档

db.student.remove({"name":"张三"})
5.2.4查询文档

命令格式:

db.collection.find(query, projection) query:查询条件,可不填 
projection:投影查询key,可不填

1)查询全部

db.student.find()

2)查询符合条件的记录

查询name等为"张三"的文档。

db.student.find({"name":"张三"})

3)投影查询

只显示name和age两个key,_id主键不显示。

db.student.find({"name":"张三"},{name:1,age:1,_id:0})

6.用户

6.1创建用户

语法格式:

mongo>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"}] } )

内置角色如下:

  • 数据库用户角色:read、readWrite;

  • 数据库管理角色:dbAdmin、dbOwner、userAdmin;

  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

  • 备份恢复角色:backup、restore;

  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、

​ dbAdminAnyDatabase

  • 超级用户角色:root

6.2查询用户

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

show users

6.3删除用户

语法格式:

db.dropUser(“用户名”)

例子:

删除root1用户

db.dropUser(“root1”)

6.4修改用户

语法格式:

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"}]})

6.5修改密码

语法格式:

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

例子:

修改root用户的密码为123

use admin db.changeUserPassword("root","123")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章