1、下载网址:https://www.mongodb.com/try/download/community

2、解压

tar -zxvf  mongodb-linux-x86_64-amazon2-6.0.4.tgz

3、存放、配置

# 改名
mv mongodb-linux-x86_64-amazon2-6.0.4.tgz mongodb

cd mongodb #进入文件夹
mkdir data
mkdir logs

配置

vim /etc/profile
# mongodb配置
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
# 刷新
source ~/.bash_profile

4、添加 MongoDB 配置文件

vim /etc/mongodb.conf
#指定数据库路径
dbpath=/usr/local/mongodb/data
#指定MongoDB日志文件
logpath=/usr/local/mongodb/logs/mongodb.log
# 使用追加的方式写日志
logappend=true
#端口号
port=27017 
#方便外网访问,外网所有ip都可以访问,不要写成固定的linux的ip
bind_ip=0.0.0.0
fork=true # 以守护进程的方式运行MongoDB,创建服务器进程
#auth=true #启用用户验证
#bind_ip=0.0.0.0 #绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定则默认本地所有IP

5、启动、关闭mongodb

#安装解决:查看libcrypto.so.10是否安装

 rpm -qa  | grep libcrypto.so
 rpm -qa  | grep libcrypt

#显示不存在libcrypto.so.10
#执行命令  
dnf install compat-openssl10

#启动 MongoDB(-conf 使用配置文件方式启动)
mongod -f /etc/mongodb.conf
#关闭 MongoDB(-conf 使用配置文件方式关闭 )
mongod --shutdown -f /etc/mongodb.conf
#查看进程
ps -ef | grep mongod

6、安装shell工具
由于高版本的mongodb去掉了自带的shell工具
https://www.mongodb.com/try/download/shell

tar -zxvf mongosh-1.6.2-linux-x64.tgz

#移动文件
mv mongosh-1.6.2-linux-x64 /usr/local/mongosh
#无密码连接
/usr/local/mongosh/bin/mongosh 127.0.0.1:27017
 
#使用账号密码登录
 
/usr/local/mongosh/bin/mongosh -u root -p 123456

7、创建用户

use admin;
 
db.createUser({user: 'root', pwd: '123456', roles: [{role: 'root', db: 'admin'}]});
 
db.createUser({user: 'admin', pwd: '123456', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]});

Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限。

8、简单指令的使用

# 插入数据
# 使用数据源
use person
# 创建集合
db.createCollection('student')
# 插入数据
db.student.insert({"name":"张三"})
# 插入多条数据
db.bbb.insert([{"name":"一"},{"name":"二"},{"name":"三"}])


//查看已经创建了的用户的情况:
> db.system.users.find()
 
//删除用户
> db.dropUser("myadmin")
true
> db.system.users.find()
//修改密码
> db.changeUserPassword("myroot", "123456")


use test_user                                 #创建数据库
db.myuser.insertOne({ name: 'tom', age:18 })  #插入数据
show dbs                                      #显示数据库
show collections                              #显示集合
db.myuser.find();                              #查询
db.myuser.find().pretty();
db.myuser.find( { name: 'tom' } );             #根据条件查询
db.myuser.find( { age: 18} );
db.myuser.find().limit(2);                     #分页查询
db.myuser.find().skip(0).limit(2);
db.myuser.find().skip(2).limit(2);
 
db.myuser.find().sort({ age: 1 });              #正序查询
db.myuser.find().sort({ age: -1 });             #倒序查询
db.myuser.find().skip(2).limit(10).sort({age:1}); #查询数据之后排序
 
 
$gt #大于
 
$lt #小于
 
$gte #大于或等于
 
$lte #小于或等于
db.myuser.find({ age: {$lt: 18} })              #查询年龄小于18
 
db.myuser.find({ $or: [ {name: 'john'},{name: 'mary'} ] });  #或
db.myuser.find({ $and: [ {name: 'john'},{age: 20} ] });      #且
 
#正则查询
db.myuser.find({ name: {$regex: "mar[a-z]"} });  #查询名字中下一个字母是a-z的
db.myuser.find( {"name":{$regex:"(a)"}} );       #查询名字中包含字母a的。
 
db.myuser.find( {age:1} ).explain(true);          #解释执行,类比MySQL的explain
 
 
 
db.myuser.getIndexes();                            #查看索引
 
db.myuser.ensureIndex( {age:1} )                   #添加索引
db.myuser.dropIndex( {age:1} )                     #删除索引,使用正则查询 索引无效
 
db.myuser.ensureIndex( {userid:1},{unique:true} )  #创建唯一索引
 
 
 
#还可以执行如下语句插入
db.myuser.insert( {age: 29} );
db.myuser.insert( {name: 'james'} );
db.myuser.insert( {'location': '北京'} );
 
#修改数据
db.myuser.update({ age: 29 }, {$set: { age: 30 }});                
db.myuser.update({ 'name': 'tom' }, { $set: { 'name': 'snail' } });
 
#删除数据
 
db.myuser.remove({ name: 'snail' });          #根据条件删除
 
db.myuser.remove( {} )                        #删除所有数据
 
#删除集合,类比mysql删除表
db.myuser.drop();
 
#删除数据库
db.dropDatabase();
 
#监控
db.serverStatus();                           #查看所有的监控信息
db.serverStatus().network ;                  #单独查看网络流量信息
db.serverStatus().opcounters;                #统计增、删、改、查的次数
db.serverStatus().connections;               #连接信息
 

LLL_
15 声望3 粉丝