安装
linux下安装:
https://blog.csdn.net/qq_41107231/article/details/108028319
1. 去官网下载安装包,自己选择需要的包,我这边是redhat 8,64位的,当然也可直接拷贝,只需要一些可执行文件,参见下方windows
cd /usr/local/ mkdir mongodb 下载:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-4.4.4.tgz 安装:tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz
2. 创建相关目录和配置文件
cd /usr/local/mongodb/ mkdir data mkdir logs cd ./logs touch mongodb.log cd ../ mkdir etc cd etc touch mongodb.conf
3. 配置mongodb.conf
#数据库路径 dbpath=/usr/local/mongodb/data #日志输出文件路径 logpath=/usr/local/mongodb/logs/mongodb.log #错误日志采用追加模式 logappend=true #启用日志文件,默认启用 journal=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false quiet=true #端口号 默认为27017 port=27017 #允许远程访问 bind_ip=0.0.0.0 #开启子进程 fork=true #开启认证,必选先添加用户,先不开启(不用验证账号密码) #auth=true
4.将mongodb服务加入环境变量
vi /etc/profile 在最后一行添加:export PATH=$PATH:/usr/local/mongodb/mongodb-linux-x86_64-4.0.13/bin 使配置文件生效:source /etc/profile 重启
5.启动mongodb
./mongod --config /usr/local/mongodb/etc/mongodb.conf
6. 添加用户
运行mongo启动客户端 use databasename(数据库名,假如没有会自动创建) db.createUser({user:"abc",pwd:"123456",roles:[{"role":"readWrite","db":"databasename"}]})
7.创建相关表,或者直接导入数据库
mongo打开客户端
use dbName
db.dropDatabase()
mongorestore -d dbName /path
8. 将mongodb配置开机自启动
修改/etc/rc.local 添加/usr/local/mongodb/mongodb-linux-x86_64-rhel80-4.4.4/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf
windows下安装:
傻瓜式安装,安装完成将目录“C:Program FilesMongoDBServer4.4in”添加到环境变量path
1. 输入mongod –version, 查看是否安装成功
2. 输入mongod启动mongodb
确认是否自动启动
3. 输入mongo打开客户端,然后就可以输入命令查看数据
4. 安装mongodump,mongorestore等工具
下载的数据库文件缺失很多工具,需要单独下载
下载:https://www.mongodb.com/try/download/database-tools
然后把对应的.exe放入到mongo安装目录下面
5. 创建数据库和用户
创建数据库: use myDb(数据库名字), 如果数据库不存在,则创建数据库,否则切换到指定数据库(这是通过show dbs看不到新建的数据库,需要插入一些数据才能看到) 创建用户:
db.createUser({user:"me",pwd:"123456",roles:[{"role":"readWrite","db":"myDb"}]})
使用
官方文档地址:
https://www.runoob.com/mongodb/mongodb-mongodump-mongorestore.html
下面列举几个常用的功能:
1. 备份
linux直接运行下面命令 "mongodump -d ITZEX -o /tmp/mongobackup/" windows假如没有配置path,进入到mongo的安装目录bin下面,运行 "mongodump -d ITZEX -o c:mongobackup"
备份完生成如下文件
2. 恢复
先删除数据库 mongo->use myDB->db.dropDatabase()
然后恢复指定路径的备份文件
mongorestore -d myDB C:UsersmeDesktopmyDB
3. 删除索引
查询:db.getCollection('表名').getIndexes() 删除:db.getCollection('表名').dropIndex('索引名')
4. Mongodb插入查询的时候发现会比实际的少8个小时,jvm和.net都有对应的设置,原理如下:插入的时候,mongo驱动会自动把时间转换成0时区的时间,存入数据库,然后你会发现数据库中的数据跟实际的比对确实是少了8个小时。查询的时候,查出来的数据,mongo驱动会自动再加上8小时,所以你使用的时候就感觉不出有问题。假如你需要数据库里面存储的时间跟实际的一致,那么不管你插入还是查询都必须加8小时(对于mongo的insert和find是这样,但是aggregate方法不需要加)。
5. 有一次碰到mongo命令连接不上,怀疑mongo挂了,我采取了如下步骤
1. 通过ps –ef|grep mongo查看有没有该进程,假如有就kill 2. 找出mongod.conf文件 find / -name *mongo* 3. Mongodb 重启 /usr/bin/mongod -f /etc/mongod.conf
6. 删除某个字段
使用 db.表名.update 配合$unset 使用 例如我们的表noPk 有两个列有字段名是script_type 我们要删除script_type=kshell字段 > db.noPK.find() { "_id" : ObjectId("5a50642b908e6b07a84472a2"), "name" : "javascript", "value" : "vue.js" } { "_id" : ObjectId("5a50655b908e6b07a84472a3"), "name" : "Xshell", "type" : "script" } { "_id" : ObjectId("5a506b40908e6b07a84472a4"), "name" : "Xshell", "type" : "script" } { "_id" : ObjectId("5a506b9d908e6b07a84472a5"), "name" : "Xshell", "type" : "script", "script_type" : "bash_shell" } { "_id" : ObjectId("5a50703c908e6b07a84472a6"), "name" : "shell", "type" : "script", "script_type" : "kshell" } > 删除: > db.noPK.update({"name": "shell"}, {$unset:{"script_type":"kshell"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.noPK.find() { "_id" : ObjectId("5a50642b908e6b07a84472a2"), "name" : "javascript", "value" : "vue.js" } { "_id" : ObjectId("5a50655b908e6b07a84472a3"), "name" : "Xshell", "type" : "script" } { "_id" : ObjectId("5a506b40908e6b07a84472a4"), "name" : "Xshell", "type" : "script" } { "_id" : ObjectId("5a506b9d908e6b07a84472a5"), "name" : "Xshell", "type" : "script", "script_type" : "bash_shell" } { "_id" : ObjectId("5a50703c908e6b07a84472a6"), "name" : "shell", "type" : "script" } >