参考文档
mongoDB 安装简介
简明 MongoDB 入门教程
推荐阅读 SpringBoot+MongoDB 实现简单CURD
MongoDB 简介
MongoDB 是免费开源的跨平台 NoSQL 数据库,命名源于英文单词 humongous,意思是「巨大无比」,可见开发组对 MongoDB 的定位。与关系型数据库不同,MongoDB 的数据以类似于 JSON 格式的二进制文档存储:
{
name: "Angeladady",
age: 18,
hobbies: ["Steam", "Guitar"]
}
{
"_id" : ObjectId("6206690607d73966f9177c69"),
"name" : "Chen1fa",
"age" : 18
}
{
"_id" : ObjectId("6206691807d73966f9177c6a"),
"name" : "Xiaose",
"age" : 35,
"license" : "A"
}
{ "_id" : 91, "name" : "Sun1feng", "age" : 34, "license" : "A" }
安装流程
下载安装包
cd /usr
mkdir mongodb
cd mongodb
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.4.6.tgz
解压
tar -zvxf mongodb-linux-x86_64-amazon-3.4.6.tgz
将 mongoDB 命令添加到环境变量:
export path=$path:/usr/mongodb/mongodb-linux-x86_64-amazon-3.4.6/bin/
vi ~/.bashrc
# 在文档末尾添加
export PATH="$PATH:/usr/mongodb/mongodb-linux-x86_64-amazon-3.4.6/bin/"
#刷新
source ~/.bashrc
启动实例 mongod
启动之前,新建一个目录来存放 mongoDB 的数据和日志:
mkdir mongoDB_example
cd mongoDB_example
mkdir bin data conf log
mkdir data/db
touch log/mongodb.log
#更改权限
chmod -R 777 ./
在项目目录中,使用 mongod 命令来启动 mongoDB 进程:
错误命令
mongod --fork --port 12345 --dbpath data\db --logpath log/mongodb.log
注意上面命令有问题,会报错 shutting down with code:100 ,启动失败
# exception in initAndListen: 29 Data directory /usr/mongodb/mongoDB_example/datadb not found., terminating
日记可以log文件下查看
问题是在 --dbpath data\db 应该改为 --dbpath data/db
mongod --fork --port 12345 --dbpath data/db --logpath log/mongodb.log
启动成功
ps aux | grep mongod
配置文件启动实例
vi conf/mongodb.conf
#添加下面值
port = 12345
dbpath = data
logpath = log/mongodb.log
fork = true
临时关闭实例
kill -2 118811
然后再重新启动 mongoDB:
mongod -f conf/mongodb.conf
连接实例 mongo
通过 mongo 命令来连接 mongoDB 实例:
mongo 127.0.0.1:12345
也可以通过浏览器访问,判断是否启动成功
http://192.168.25.130:12345/
数据库 CRUD 操作
常用的 shell 操作:
db 显示当前所在数据库,默认为 test
show dbs 列出可用数据库
show tables show collections 列出数据库中可用集合
use <database> 用于切换数据库
mongoDB 预设有两个数据库,admin 和 local,admin 用来存放系统数据,local 用来存放该实例数据,在副本集中,一个实例的 local 数据库对于其它实例是不可见的。使用 use 命令切换数据库:
use admin
use local
use newDatabase
可以 use 一个不存在的数据库,当你存入新数据时,mongoDB 会创建这个数据库:
use newDatabase
db.newCollection.insert({x:1})
#WriteResult({ "nInserted" : 1 })
以上命令向数据库中插入一个文档,返回 1 表示插入成功,mongoDB 自动创建 newCollection 集合和数据库 newDatabase。
下面将创建一个 drivers 集合,进行增查改删操作 CURD。
db.drivers.insert({name:"Chen1fa",age:18})
db.drivers.insert({name:"Xiaose",age:35})
db.drivers.insert({_id:91,name:"Sun1feng",age:34})
show tables show collections
#显示下面两个可用集合
#drivers
#newCollection
db.drivers.find().count()
#3
db.drivers.find({name: "Xiaose"})
#按name查询
#{ "_id" : ObjectId("6206691807d73966f9177c6a"), "name" : "Xiaose", "age" : 35 }
db.drivers.find({age:{$gt:20}}) db.drivers.find({age:{$gt:20}})
#年龄超过20的
#{ "_id" : ObjectId("6206691807d73966f9177c6a"), "name" : "Xiaose", "age" : 35 }
#{ "_id" : 91, "name" : "Sun1feng", "age" : 34 }
db.drivers.find().skip(1).limit(10).sort({age:1})
#按年龄查询,跳过第一条
#{ "_id" : 91, "name" : "Sun1feng", "age" : 34 }
#{ "_id" : ObjectId("6206691807d73966f9177c6a"), "name" : "Xiaose", "age" : 35 }
db.drivers.find().pretty()
#查询所有,提升查询文档的易读性
{
"_id" : ObjectId("6206690607d73966f9177c69"),
"name" : "Chen1fa",
"age" : 18
}
{
"_id" : ObjectId("6206691807d73966f9177c6a"),
"name" : "Xiaose",
"age" : 35
}
db.drivers.update({age:{$gt:25}},{$set:{license:'A'}},{multi: true})
#依据查询条件更新
#WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
db.drivers.remove({name:"Xiaose1"})
#依据查询条件删除
#WriteResult({ "nRemoved" : 0 })
关闭实例
use admin
db.shutdownServer()
exit
结语
上述,我们启动了一个不安全的 MongoDB 实例,应用到生产环境中,还需要了解 MongoDB 的安全机制,了解如何建立索引提升数据库的读写速度。随着数据的增长,需要了解副本集技术如何将多个实例部署到不同的服务器、了解分片技术对数据库进行横向扩展。为保证服务器性能和安全,需要了解如何对 MongoDB 进行测试和监控…
「冰封三尺,非一日之寒」,同样,要想完全掌握 MongoDB 还有很长的路要走。愿戒骄戒躁,在学习的路上,与君共勉。