MongoDB基础教程(安装、操作、配置)
MongoDB
下载安装
简易安装
# redhat, centOS
sudo yum install -y mongodb
# debian, ubuntu
sudo apt install -y mongodb
如果简易安装失败,各种操作系统具体的安装请移步官方文档:
https://docs.mongodb.com/manual/administration/install-on-linux/
修改配置文件
vi /etc/mongod.conf
bind_ip
默认是127.0.0.1
,只可以本地连接,修改为0.0.0.0
即可
MongoDB 数据文件默认存储在 /var/lib/mongo 目录,默认日志文件在 /var/log/mongodb 中。
如果要修改,可以在 /etc/mongod.conf 配置中指定备用日志和数据文件目录。
查看MongoDB是否启动成功:
查看日志文件:cat /var/log/mongodb/mongod.log
日志文件应该有如下一句说明:
[initandlisten] waiting for connections on port <port>
卸载移除mongo
yum erase $(rpm -qa | grep mongodb-org)
移除数据库文件和日志文件
rm -r /var/log/mongodb
rm -r /var/lib/mongo
MongoDB操作命令
服务命令
查看帮助:mongod --help
启动:systemctl start mongod
停止:systemctl stop mongod
重启:systemctl restart mongod
查看是否启动成功: ps aux | grep mongod
配置文件位置:/etc/mongo.conf
默认端口:27017
日志的位置:/var/log/mongodb/mongod.log
数据库命令
查看当前数据库:db
查看所有数据库:show databases/dbs
切换/新建数据库:use databaseName
删除当前数据库:db.dropDatabase()
集合基础命令
不手动创建集合:
向不存在的集合中第一次加入数据时,集合会被创建出来
手动创建集合:
db.createCollection(name,options)
eg:——db.createCollection('sub',{capped:true, size:10})
capped:默认值为false表示不设置上限,true相反
size:当capped为true时,需要指定此参数,表示上限的大小,当文档达到上限,会覆盖之前的数据。类似于先进先出队列。
查看集合:show collections
查看全部集合内容:db.collectionName.find()
删除集合:db.collectionName.drop()
查询指定记录:db.collectionName.find("name": "李四")
插入数据:
# 如果数据库中不存在集合,就创建并插入这些数据。里面的key-value不用保持一致
db.student.insert({"name":"张三","age":"22","sex":"男","class":"计算机2班"});
db.student.insert({"name":"李四","age":"22","sex":"女","phone":"18513081650","class":"计算机1班"});
#同时插入多条数据
db.student.insert([{"name":"王五","age":"22","sex":"男","class":"计算机2班"},{"name":"赵六","age":"22","sex":"女","phone":"18513081650","class":"计算机1班"}]);
更新数据:
db.student.update({"name":"张三"},{"name":"张三丰"});#如果有多条语句,只修改第一条,会覆盖原有数据
db.student.update({"22":"女"},{"name":"张三丰"});
db.student.update({"name":"张三"},{$set:{"name":"张无忌"}});#只想改某个key的value使用set
db.student.update({"name":"王五"},{$set:{"name":"张无忌"}},{multi:true});#把所有的记录都改了
查询数据:
# 查询全部
db.student.find();
# 查询指定记录,返回这一行结果
db.student.find({"name":"李四"});
db.student.update({"name":"张三丰"},{"name":"张无忌","age":"28","sex":"男"});
# and操作
db.student.find({"name":"张无忌","age":"28"});
# or操作
db.student.find({$or:[{"name":"张无忌"},{"name":"李四"}]});
# 格式化显示
db.student.find().pretty();
# 获取结果的行数
db.student.find().count();
# 按照sort里面key的值排序,1为正序,-1为倒序
db.student.find().sort({"age":-1});
删除数据:
# 删除所有数据
db.student.remove();
# 按照条件删除
db.student.remove({"22":"女"});
# 删除几条
db.student.remove({"name":"张无忌"},2);
创建用户:
db.createUser({
user: "cky",
pwd: "password",
roles: [{role: "readWrite",db: "cky_db"}]
})
数据类型
Object ID: 文档ID
String: 字符串,必须是有效的UTF-8
Boolean: true or false
integer: 可以是32或64,这取决于服务器
Double:存储浮点值
Arrays: 数组或列表,多个值存储到一个键
Object: 用于嵌入式文档,即一个值为一个文档
Null: 存储Null值
Timestamp: 时间戳,表示从1970-1-1到现在的总秒数
Date:存储当前日期或时间的Unix时间格式
设置/查看具体参数
设置参数
- db.adminCommand({setFeatureCompatibilityVersion:'4.0'}) // 修改版本到4.0
- db.adminCommand( { setParameter: 1, transactionLifetimeLimitSeconds: 300 } ) // 修改事务超时时间为5分钟开启事务支持
- db.adminCommand( { setParameter: 1, maxTransactionLockRequestTimeoutMillis: 20 } ) // 修改事务获取锁的等待时间20毫秒
查看具体参数
db.adminCommand( { getParameter: 1, transactionLifetimeLimitSeconds: 1 } )
查看是否为Master
db.isMaster()
将MongoDB中的collection导出为csv
mongoexport -h localhost -d dbname -c collname -f field1,field2 --csv -o output.csv
Mongo配置文件详解
文件路径:/etc/mongod.conf
verbose:
日志信息冗余,默认false。提高内部报告标准输出或记录到logpath配置的日志文件中,要启用verbose或启用verbosity用vvvv参数。
eg:verbose = true 或 vvvv = true
ps:启动verbose冗长信息,级别有vv~vvvvv,v越多级别越高,日志文件中记录的信息越详细。
port:
端口。默认27017,MongoDB的默认服务TCP端口,监听客户端连接。要是端口设置小于1024,比如1021,则需要root权限启动,不能用mongodb账号启动,否则报错。
port = 27017
bind_ip:
绑定地址。默认是127.0.0.1,只能通过本地连接。进程绑定和监听来自这个地址上的应用连接。要是需要给其他的服务器连接,则需要注释掉这个或者把IP改成本机地址,可以用逗号分隔的列表绑定多个IP地址。
bind_ip = 0.0.0.0
maxConns:
最大连接数。默认值:取决于系统限制。MongoDB中不会限制其自身的连接。当设置大于系统的限制,则无效,以系统限制为准。这对于客户端创建很多集合,允许连接超时而不关闭集合的时候,很有用。
控制流量峰值时的连接。
ps:不能设置该值大于20000。
eg: maxConns = 100
objcheck:
强制验证客户端请求。强制验证客户端请求,确保客户端绝不插入无效文件到数据库中。对于嵌套文档的对象,会有一点性能影响。
eg: objcheck = true 或 noobjcheck = false
logpath:
指定日志文件,该文件将保存所有的日志记录,诊断信息。除非另有指定,mongod将所有的日志信息输出到标准输出。如果没有指定logappend,重启则日志会进行覆盖操作。
logappend:写日志的模式,设置为true为追加。默认时覆盖。如果未指定此设置,启动时MongoDB将覆盖现有的日志文件。
logappend = true
syslog:
日志输出都发送到主机的syslog系统,而不是标准输出到logpath指定日志文件。syslog和logpath不能一起用,会报错:Cant use both a logpath and syslog
pidfilepath = /var/run/mongo.pid:
进程ID,没有指定则启动时就没有PID文件,默认缺省。
pidfilepath = /var/run/mongo.pid
ps: 平时用一点查一点,然后记一点,再加上一些自己遇到的查官方文档,最后汇聚成这样的一篇博客。若觉得有冒犯的,请私信或者留言,会著名。
MongoDB基础教程(安装、操作、配置)的更多相关文章
- MongoDB Windows环境安装及配置
MongoDB一般安装 1.首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,目前的最新版本为2.6 安装包有zip和msi格式的,这里推荐下载zip格 ...
- Kali Linux常用服务配置教程安装及配置DHCP服务
Kali Linux常用服务配置教程安装及配置DHCP服务 在Kali Linux中,默认没有安装DHCP服务.下面将介绍安装并配置DHCP服务的方法. 1.安装DHCP服务 在Kali Linux中 ...
- mongoDB数据库的安装与配置
noSql数据库MongoDB的安装地址:https://www.mongodb.com/download-center?jmp=nav#community 选择相应的版本进行下载,在此以window ...
- MongoDB基础教程[菜鸟教程整理]
MongoDB基础教程 ======================================================================================== ...
- 1. 初探MongoDB —— 介绍、安装和配置
一.写在前面 之前一直以来,都是使用关系型数据库.也很早就听闻,当数据量大的时候,关系型数据库使用起来会有很多问题.诸如查询数据慢,加载花费时间长等等. 也早就耳闻NOSQL(NoSQL = Not ...
- MongoDB基础教程系列--未完待续
最近对 MongoDB 产生兴趣,在网上找的大部分都是 2.X 版本,由于 2.X 与 3.X 差别还是很大的,所以自己参考官网,写了本系列.MongoDB 的知识还是很多的,本系列会持续更新,本文作 ...
- Spring Cloud Alibaba基础教程:Nacos配置的多文件加载与共享配置
前情回顾: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方式> ...
- Spring Cloud Alibaba基础教程:Nacos配置的多环境管理
前情回顾: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方式> ...
- MongoDB基础教程系列--目录结构
最近对 MongoDB 产生兴趣,在网上找的大部分都是 2.X 版本,由于 2.X 与 3.X 差别还是很大的,所以自己参考官网,写了本系列.MongoDB 的知识还是很多的,本系列会持续更新,本文作 ...
- GSAP JS基础教程--TweenLite操作元素的相关属性
今天来学习用TweenLite操作元素的各种属性,以Div为例,其他元素的操作也是一样的,只是可能一些元素有它们的特殊属性,就可能不同罢了. 代码里用详细注释,我就不再重复啦,大家看代码就可以啦! ...
随机推荐
- thinkphp6.0.x 反序列化详记(二)
前言 接上文找第二条POP链. 环境配置 同上文 POP链构造 寻找__destruct方法 仍然是寻找__destruct,这次关注AbstractCache.php(/vendor/league/ ...
- protoc-c 阅读笔记
以前和山哥做过类似的,最近想起来,抽空又看了下 protoc-c. 山哥做的报文流向: rpc -> lydtree -> motree -> struct 涉及的细节很多 1) l ...
- Hello World -- 第一篇博客 -- 活着的意义
今年注定是不寻常的一年,因为技术,接触了许多大牛.通过一篇篇博文,看到了大牛们勤奋好学.孜孜不倦的精神,于是决定也开个博客,向大牛学习. 博客开了,写点什么呢?奈何肚子里墨水不多,吐出来也多是白沫,不 ...
- mysql DISTINCT选取多个字段,获取distinct后的行信息
背景: a表保存关联关系,通过ACode 获取该关系中的所有 BCode, 并获取所有Bcode-max(Bvrsn)的信息 Bnm 表a 表b 循序渐进: ...
- 修改LiveChart的提示显示位置
问题:修改LiveChart的提示显示位置 摘要:相信WPF开发者在用LiveCharts的时候会有遇到这个需求.就是产品要求折线图的提示要显示的正常点. 需求:如下图所示.原本显示是在下方并且没有小 ...
- springboot入门系列(四):SpringBoot和Mybatis配置多数据源连接多个数据库
SpringBoot和Mybatis配置多数据源连接多个数据库 目前业界操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑.在SpringBo ...
- Unity-根据时间开灯与关灯
声明:本人只是学生,并且只是自学Unity,如有大神,不喜勿喷,不足之处,请指出! 本项目使用了UniStorm 3.0(天气)插件,时间也是调用它本身的API,实际并不影响,用系统的时间的是也是可以 ...
- 简单又强大的pandas爬虫 利用pandas库的read_html()方法爬取网页表格型数据
文章目录 一.简介 二.原理 三.爬取实战 实例1 实例2 一.简介 一般的爬虫套路无非是发送请求.获取响应.解析网页.提取数据.保存数据等步骤.构造请求主要用到requests库,定位提取数据用的比 ...
- airtest本地连接和远程连接
一.本地连接 # -*- coding: utf-8 -*-# from poco.drivers.android.uiautomation import AndroidUiautomationPoc ...
- dbvis 导出表结构 xls
1.dbvis 可以导出多种格式的文件,如SQL.XLS.TXT.HTML.JSON.CSV及XML. 需求场景(本场景是实际场景引申的场景,此处导出xls): 最近,遇到一个需求需要将表的结构数据导 ...