官网下载地址:
http://www.mongodb.org/downloads
此次安装版本下载地址:
https://www.mongodb.com/dr/fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.7.tgz/download
帮助文档
https://www.runoob.com/mongodb/
数据库管理工具
:https://github.com/iwind/rockmongo
配置文件详解
#日志文件位置
logpath=/data/db/journal/mongodb.log (这些都是可以自定义修改的)
# 以追加方式写入日志
logappend=true
# 是否以守护进程方式运行
fork = true
# 默认27017
#port = 27017
# 数据库文件位置
dbpath=/data/db
# 启用定期记录CPU利用率和 I/O 等待
#cpu = true
# 是否以安全认证方式运行,默认是不认证的非安全方式
#noauth = true
#auth = true
# 详细记录输出
#verbose = true
# Inspect all client data for validity on receipt (useful for
# developing drivers)用于开发驱动程序时验证客户端请求
#objcheck = true
# Enable db quota management
# 启用数据库配额管理
#quota = true
# 设置oplog记录等级
# Set oplogging level where n is
# 0=off (default)
# 1=W
# 2=R
# 3=both
# 7=W+some reads
#diaglog=0
# Diagnostic/debugging option 动态调试项
#nocursors = true
# Ignore query hints 忽略查询提示
#nohints = true
# 禁用http界面,默认为localhost:28017
#nohttpinterface = true
# 关闭服务器端脚本,这将极大的限制功能
# Turns off server-side scripting. This will result in greatly limited
# functionality
#noscripting = true
# 关闭扫描表,任何查询将会是扫描失败
# Turns off table scans. Any query that would do a table scan fails.
#notablescan = true
# 关闭数据文件预分配
# Disable data file preallocation.
#noprealloc = true
# 为新数据库指定.ns文件的大小,单位:MB
# Specify .ns file size for new databases.
# nssize =
# Replication Options 复制选项
# in replicated mongo databases, specify the replica set name here
#replSet=setname
# maximum size in megabytes for replication operation log
#oplogSize=1024
# path to a key file storing authentication info for connections
# between replica set members
#指定存储身份验证信息的密钥文件的路径
#keyFile=/path/to/keyfile
storageEngine=mmapv1 #存储引擎压缩空间
安装
把下载好的tar包放在/usr/local/下面。创建软连接。
原理,解压完后自己创建conf文件,然后用bin下面的mongod启动对应的文件。
cd /usr/local/mongodb/
[root@mongodb ~]# mkdir -p /data/mongodb1
[root@mongodb ~]# mkdir -p /data/logs/mongodb
[root@mongodb ~]# touch /data/logs/mongodb/mongodb1.log
[root@mongodb ~]# cd /usr/local/mongodb/
[root@mongodb mongodb]# ls
bin GNU-AGPL-3.0 MPL-2 README THIRD-PARTY-NOTICES
[root@mongodb mongodb]# mkdir conf
[root@mongodb mongodb]# vim conf/mongodb1.conf
port=27017
dbpath=/data/mongodb1
logpath=/data/logs/mongodb/mongodb1.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
#auth=true 开启密码验证
#bind_ip=192.168.41.101 #绑定ip
#slowms=1 //慢查询日志,超过 1 秒的查询请求将被记录
#profile=1 //0=off,1=slow,2=all
#httpinterface=true #启用web界面
#rest=true
连接数据库
[root@mongodb mongodb]# /usr/local/mongodb/bin/mongod -f
/usr/local/mongodb/conf/mongodb1.conf // 启动 MongoDB 数据库,-f
[root@centos mongodb]$ln -sv /usr/local/mongodb/bin/mongo /usr/bin
‘/usr/bin/mongo’ -> ‘/usr/local/mongodb/bin/mongo’
[root@centos mongodb]$mongo
MongoDB shell version v4.0.12
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
show dbs
exit
去除报错
[root@mongodb ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@mongodb ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
关闭服务器
1)
use admin
db.shutdownServer()
exit
2)
mongod -f /usr/local/mongodb/conf/mongodb1.conf --shutdown
3)
kill 进程
开启两个实例
[root@centos conf]$cp mongodb1.conf mongodb2.conf
[root@centos conf]$vim mongodb2.conf
port=27018
dbpath=/data/mongodb2
logpath=/data/logs/mongodb/mongodb2.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
[root@mongodb conf]# mkdir /data/mongodb2
[root@mongodb conf]# touch /data/logs/mongodb/mongodb2.log
[root@mongodb conf]# chmod 777 /data/logs/mongodb/mongodb2.log
编写启动脚本
vim mongodb.sh
INSTANCE=$1
ACTION=$2
case "$ACTION" in
'start')
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/"$INSTANCE".conf;;
'stop')
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/"$INSTANCE".conf --shutdown;;
'restart')
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/"$INSTANCE".conf --shutdown
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/"$INSTANCE".conf;;
esac
运行脚本
chmod +x mongodb.sh
sh mongodb.sh mongodb1 start
mongo --host 127.0.0.1:27018 #指定端口登陆
基本命令使用
show dbs 查看当前示例下的数据库列表,等同于 show database
show users 显示用户
use <db_name> 切换当前数据库
db.help() 显示数据库操作命令
show collections 显示当前数据库中的集合,等同于 show tables
db.mycoll.help() 显示集合操作命令,mycoll 是当前下叫做 mycoll 的集合
db.foo.find() 对当前数据库中 foo 集合进行数据查找
use 数据库名字,即使没有也可以登陆
创建一个表
use test
> db.test.insert({"name":"菜鸟教程"})
> show tables
system.indexes
test
> show collections
system.indexes
test
> db.test.find() #查看表数据
> help #查看帮助
> db.help() 查看库帮助
> db.stats() 查看状态
#插入数据以及查看,大小写敏感,asc排序。不能以$开头
> db.test.insert({"id":3,"name":"world2"})
WriteResult({ "nInserted" : 1 })
> db.test.find({"id":3})
{ "_id" : ObjectId("5da1f3bcae0cc87bcef128b0"), "id" : 3, "name" : "world2" }
> db.test.findOne({"id":3})
{
"_id" : ObjectId("5da1f3bcae0cc87bcef128b0"),
"id" : 3,
"name" : "world2"
}
关于 null
> db.t1.find({"gender":null});
所有行都被找出来了 ,若要找有 gender 存在的行,需要执行如下命令:
> db.t1.find({"gender":{"$exists":true}});
#删除数据库
use test
> db.dropDatabase()
表基本操作
> use list
> db.list.insert({"id":103,"name":"诸葛亮","age":1000,"dept":" 行政部"})
> db.list.find({"name":"诸葛亮"})
> db.list.update({"name":" 诸葛亮"},{"$set":{"id":150}});
> db.list.find({"name":" 诸葛亮"})
{ "_id" : ObjectId("57845ffc7f59c53a125b77ac"), "id" : 150, "name" : "诸葛亮", "age" : 1000,"dept" : "行政部" }
> db.list.remove({"name":"诸葛亮"})
> db.list.find().sort({age:1}).limit(10) // 排序,按年龄从小到大(-1 为从大到小),前十个
> db.list.find().skip(10).limit(5) // 跳过前 10 个,然后的 5
> db.list.find({"age":20})
> db.list.find({"age":20},{"name":1,"age":1})
> db.list.find({"age":{$gt:60}}) // 年龄大于 60 的
> db.list.find({"age":{$lt:20}}) // 年龄小于 20 的
> db.list.find({"age":{$mod:[10,1]}}) // 年龄除以10余1
> db.list.find({"dept":" 会计部"})
> db.list.find({"dept":{"$in":[" 会计部"," 客服部"]}})
> db.list.find({name:/^ 张/}) 以什么开头的
> db.list.find({name:/^[ 张王]/}).sort({name:1}) //姓张或姓王的,按姓名排序
> db.list.find({$or:[{"age":{$gt:60}},{"age":{$lt:20}}]}).sort({age:1})
// 按年龄排序,大于 60 或小于 20
> db.list.distinct("dept") //distinct 去重