MongoDb 30分钟入门
MongoDB
MongoDB 是一个基于分布式文件存储的数据库。由 C++语言编写,它是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 概念解析
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDb自动将_id字段设置为主键 |
安装MongoDB
MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包。
下载地址:https://www.mongodb.com/download-center#community
下载完安装包,并解压 tgz
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz # 下载
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解压
mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb # 将解压包拷贝到指定目录
export PATH=<mongodb-install-directory>/bin:$PATH #MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:
创建数据库目录
MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。。
注意:/data/db 是 MongoDB 默认的启动的数据库路径(--dbpath)
mkdir -p /data/db
启动MongoDb服务器
输入命令,回车
cd /usr/local/mongodb/bin/
mongod --dbpath /data/db
MongoDb服务启动成功,如图
image
启动MongoDb服务器后,我们启动一个终端连接到 MongoDb 服务器。(xshell重新打开一个窗口)
连接MongoDb服务器命令的语法如下
mongo server_ip:port/dbname -u user -p password
因为这里我连接的是本地服务器,直接输入mongo,即可进行shell后台,可进行数据库的CURD操作。
imageMongoDb的crud
1.MongoDb创建数据库
MongoDB 创建数据库的语法格式如下:
use database_name
如果数据库不存在,则创建数据库,否则切换到指定数据库。
image如图创建了huaxiao的数据库,但是在使用show dbs命令时,并没有看到数据库存在,这是因为该数据库中还没有数据。要显示它,我们需要向数据库插入一些数据。
2.删除数据库
MongoDB 删除数据库的语法格式如下:
db.dropDatabase()
接下来我们切换到数据库 huaxiao,执行删除操作:
> use huaxiao
switched to db huaxiao
> show dbs
huaxiao 0.078GB
local 0.078GB
> db.dropDatabase()
{ "dropped" : "huaxiao", "ok" : 1 }
> show dbs
local 0.078GB
>
3.MongoDb创建表(集合)
MongoDB 中使用 createCollection() 方法来创建集合。
db.createCollection(name, options)
参数说明:
- name: 要创建的集合名称
- options: 可选参数, 指定有关内存大小及索引的选项
下图创建了一个数据库huaxiao,创建了礼物集合gift
image
4.删除表(集合)
集合删除语法格式如下:
db.collection.drop()
以下实例删除了集合 gift:
> show tables;
gift
system.indexes
> db.gift.drop()
true
> show tables;
system.indexes
>
5.MongoDB 插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.collection.insert(document)
以下文档可以存储在 MongoDB 数据库 的 gift 集合中:
image
6.MongoDB 查询文档
MongoDB 查询数据的语法格式如下:
db.collection.find(query, projection)
参数说明:
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
db.collection.find(query, projection).pretty()
以下实例我们查询了集合 col 中的数据:
db.gift.find().pretty();
{
"_id" : ObjectId("5d1951a6659f4eaa30bac84f"),
"id" : "1",
"name" : "守护之心",
"price" : "10"
}
7.MongoDB 删除文档
remove() 方法的基本语法格式如下所示:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
- writeConcern :(可选)抛出异常的级别。
我们移除 name 为 '守护之心' 的文档:
> db.gift.remove({'name':'守护之心'})
WriteResult({ "nRemoved" : 1 })
如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:
db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
8.MongoDB 更新文档
update() 方法用于更新已存在的文档。语法格式如下:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如inc...)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
我们在集合 gift 中插入如下数据:
>db.gift.insert({
"id" : "1",
"name" : "守护之心",
"price" : "10"
})
接着我们通过 update() 方法来更新礼物价格(price),并查看,更新成功:
> db.gift.update({'id':'1'},{$set:{'price':'888'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.gift.find().pretty()
{
"_id" : ObjectId("5d1a9e46b35668bf92c989e3"),
"id" : "1",
"name" : "守护之心",
"price" : "888"
}
>
参考资料
- MongoDB Tutorials — MongoDB Manual 3.4
- 菜鸟教程: https://www.runoob.com/mongodb/mongodb-tutorial.html