一、安装前需要安Linux平台依赖包。
yum install libcurl openssl
二、创建以下文件夹,用来存放Mongodb的压缩包以及安装目的路径
mkdir -p /opt/software
mkdir -p /usr/local/mongodb
三、解压安装包到/usr/local/mongodb/
tar -zxvf /opt/software/mongodb-linux-x86_64-rhel70-6.0.10.tgz -C /usr/local/mongodb/
四、添加Mongodb的bin路径到PATH
1、打开终端并以root用户身份登录,打开/etc/profile文件
vim /etc/profile
在文件的末尾添加以下行
export PATH=/usr/local/mongodb/mongodb-linux-x86_64-rhel70-6.0.10/bin:$PATH
保存并关闭文件
2、重新加载配置文件
source /etc/profile
3、检查环境变量是否已设置
echo $PATH
五、创建数据库目录
数据存储目录:
mkdir -p /var/mongodb/data
日志文件目录:
mkdir -p /var/mongodb/log
六、启动 Mongodb 服务(--dbpath:数据路径 --logpath:日志路径 --port:端口 --fork:后台进程 --bind_ip_all:外网可以访问,否则无法通过浏览器访问27017端口)
mongod --dbpath /var/mongodb/data --logpath /var/mongodb/log/mongod.log --port 27017 --bind_ip_all --fork
七、关闭Mongodb服务
mongod --dbpath /var/mongodb/data --logpath /var/mongodb/log/mongod.log –shutdown
打开 tail -10f /var/mongodb/log/mongod.log 文件看到信息,说明启动成功。
执行 curl 192.168.154.130:27017 若出现It looks like you are trying to access MongoDB over HTTP on the native driver port.说明可以外网访问了
安全管理
默认情况下,启动的MongoDB没有登录密码,在生产环境中这是非常不安全的,但是不同于MySQL、Oracle等关系型数据库,MongoDB中每一个库都有独立的密码,在哪一个库中创建用户就要在哪一个库中验证密码。要配置密码,首先要创建一个用户,例如在admin库中创建一个用户,代码如下:
db.createUser({user:"zyf",pwd:"1203",roles:[{role:"readWrite",db:"zyf-db"}]})
新创建的用户名为 yf,密码是1203,roles表示该用户具有的角色,这里的配置表示该用户对zyf-db 库具有读和写两项权限。
用户创建成功后,关闭当前实例,然后重新启动;
./mongo
db.auth("suohechuan","123@456")
如果db.auth(“suohechuan”,“123@456”)命令执行结果为1,就表示认证成功,可以执行对zyf-db库的读写操作
windows启动mongodb,指定数据存储路径、log日志路径,以及访问端口号
mongod.exe --dbpath="D:\Program Files\MongoDB\Server\6.0\data" --logpath="D:\Program Files\MongoDB\Server\6.0\log\mongodb.log" --port=27018
#查看数据库
show dbs(或show databases)
#进入zyf-md数据库
user zyf-md
# 查看集合
show collections
#向数据库插入文档
db.<collection>.insert(doc)
db.tbl_user.insert({userName:"张延分",age:22,sex:"男"})
#查询当前集合的所有文档
db.tbl_user.find()
Mongodb语法练习
objectId()
db.user.find()
db.user.find({})
db.user.find({"userName":"张延分","_id":"a1234"})
db.user.findOne({"userName":"张延分"})
db.user.find().count()
db.user.find({}).length()
db.user.insert(
{
"_id":"a1234",
"userName": "张延分",
"age": NumberInt("22"),
"sex": "男"
}
)
db.user.insertOne(
{
"userName": "张三",
"age": 33,
"sex": "女"
}
)
db.user.insertMany([
{
"userName": "李四",
"age": 33,
"sex": "男"
},
{
"userName": "王五",
"age": 22,
"sex": "女"
}])
//替换新对象
db.user.update({"_id":"a1234"},{"_id":"a1234","userName":"张延分2","age":NumberInt("22"),"sex":"男","childs":["张玉砚","张天尧"]})
//修改指定的字段(没有字段或自动添加),默认只会修改一个
db.user.update({"_id":"a1234"},{$set:{name:"张小杰",age:12}})
//删除指定的字段(字段内容无所谓)
db.user.update({"_id":"a1234"},{$unset:{name:"",age:12}})
//修改符合多个条件的文档
db.user.updateMany({"userName":"张延分"},{$set:{name:"猪八戒2",age:27}})
//修改符合条件的一个文档
db.user.updateOne({"userName":"张延分"},{$set:{name:"猪八戒21",age:27}})
//修改符合多个条件的文档(第三个参数)
db.user.update({"userName":"张延分"},{$set:{name:"猪八戒32",age:67}},{multi:true})
db.user.insertMany([
{
"userName": "李四",
"age": 33,
"sex": "男",
study:[{"kemu":"语文","chengji":"33"},{"kemu":"数学","chengji":"44"}],
citys:["北京","上海","天津"],
laopo:{"name":"蔡老师","sex":"女",childs:["玉砚","天尧"]}
},
{
study:[{"kemu":"物理","chengji":"33"},{"kemu":"数学","chengji":"44"}],
citys:["北京","上海","成都"],
laopo:{"name":"蔡老师","sex":"女",childs:["张三","天尧"]}
}{
study:[{"kemu":"物理","chengji":"33"},{"kemu":"数学","chengji":"44"}],
citys:["北京","上海","成都"],
laopo:{"name":"蔡老师","sex":"男",childs:["张三","天尧"]}
}
//嵌套文档查询
db.user.find({"userName":"李四"})
db.user.find({"study.kemu":"语文"})
db.user.find({"study.chengji":"33"})
db.user.find({"citys":"上海","study.kemu":"语文"})
//嵌套文档修改
db.user.update({"laopo.childs":"玉砚"},{$set:{age:66}},{multi:true})
db.user.update({"laopo.childs":"玉砚"},{$set:{"laopo.childs":["a","玉砚","c"]}},{multi:true})
db.user.update({"laopo.childs":"玉砚"},{$push:{"laopo.childs":"无敌"}},{multi:true})
db.user.update({"laopo.childs":"玉砚"},{$addToSet:{"study":{"kemu":"化学","chengji":"37"}}},{multi:true})
db.user.remove({"study.kemu":"化学"})
//清空集合的所有文档(性能很差,会一条条的删除)
db.user.remove({})
//删除符合条件的文档
db.user.remove({"userName":"aaa"})
//若跟上参数true,则删除符合条件的一条文档
db.user.remove({"userName":"aaa"},true)
//删除一个符合条件的文档
db.user.deleteOne({"userName":"aaa"})
//删除多个符合条件的文档
db.user.deleteMany({"userName":"aaa"})
//替换符合条件的一条文档
db.user.replaceOne({"userName":"aaa"}, {"userName":"bbb",age:22} )
//第一种插入方式3.9秒
for(var i=1;i<=20000;i++){
db.numbers.insert({"numberd":i})
};
//第二种插入方式 0.3秒
var arrs=[];
for(var i=1;i<=10;i++){
arrs.push({"numberd":i,"name":"z"})
};
db.numbers.insert(arrs);
//查询文档数量
db.numbers.find().count()
//删除所有文档
db.numbers.remove({})
//numberd小于6
db.numbers.find({"numberd":{$lt:6}})
db.numbers.find({"numberd":{$lte:6}})
//numberd大于19995
db.numbers.find({"numberd":{$gt:19995}})
db.numbers.find({"numberd":{$gte:19995}})
db.numbers.find({"numberd":{$gte:40,$lte:50}})
//查询 第三页的数据,每页显示10条,sort排序(1:正序,-1:倒序),find的第二个参数是投影的字段(1:显示;0:不显示)
db.numbers.find({},{"numberd":0}).skip((3-1)*10).limit(10).sort({numberd:-1,"_id":1})
//查询numberd小于6或者大于19995
db.numbers.find({$or:[{"numberd":{$lt:6}},{"numberd":{$gt:19995}}]})
//name为z的numberd增加100
db.numbers.updateMany({"name":"z"},{$inc:{numberd:100}})
附实践代码:https://download.csdn.net/download/zyf1203/89588809