MongoDB


下载安装

简易安装

  1. # redhat, centOS
  2. sudo yum install -y mongodb
  3. # debian, ubuntu
  4. 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()


集合基础命令

不手动创建集合:

向不存在的集合中第一次加入数据时,集合会被创建出来

手动创建集合:

  1. db.createCollection(name,options)
  2. 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": "李四")

插入数据:

  1. # 如果数据库中不存在集合,就创建并插入这些数据。里面的key-value不用保持一致
  2. db.student.insert({"name":"张三","age":"22","sex":"男","class":"计算机2班"});
  3. db.student.insert({"name":"李四","age":"22","sex":"女","phone":"18513081650","class":"计算机1班"});
  4. #同时插入多条数据
  5. db.student.insert([{"name":"王五","age":"22","sex":"男","class":"计算机2班"},{"name":"赵六","age":"22","sex":"女","phone":"18513081650","class":"计算机1班"}]);

更新数据:

  1. db.student.update({"name":"张三"},{"name":"张三丰"});#如果有多条语句,只修改第一条,会覆盖原有数据
  2. db.student.update({"22":"女"},{"name":"张三丰"});
  3. db.student.update({"name":"张三"},{$set:{"name":"张无忌"}});#只想改某个keyvalue使用set
  4. db.student.update({"name":"王五"},{$set:{"name":"张无忌"}},{multi:true});#把所有的记录都改了

查询数据:

  1. # 查询全部
  2. db.student.find();
  3. # 查询指定记录,返回这一行结果
  4. db.student.find({"name":"李四"});
  5. db.student.update({"name":"张三丰"},{"name":"张无忌","age":"28","sex":"男"});
  6. # and操作
  7. db.student.find({"name":"张无忌","age":"28"});
  8. # or操作
  9. db.student.find({$or:[{"name":"张无忌"},{"name":"李四"}]});
  10. # 格式化显示
  11. db.student.find().pretty();
  12. # 获取结果的行数
  13. db.student.find().count();
  14. # 按照sort里面key的值排序,1为正序,-1为倒序
  15. db.student.find().sort({"age":-1});

删除数据:

  1. # 删除所有数据
  2. db.student.remove();
  3. # 按照条件删除
  4. db.student.remove({"22":"女"});
  5. # 删除几条
  6. db.student.remove({"name":"张无忌"},2);

创建用户:

  1. db.createUser({
  2. user: "cky",
  3. pwd: "password",
  4. roles: [{role: "readWrite",db: "cky_db"}]
  5. })

数据类型

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:

  1. 日志信息冗余,默认false。提高内部报告标准输出或记录到logpath配置的日志文件中,要启用verbose或启用verbosityvvvv参数。
  2. egverbose = true vvvv = true
  3. ps:启动verbose冗长信息,级别有vv~vvvvvv越多级别越高,日志文件中记录的信息越详细。

port:

  1. 端口。默认27017MongoDB的默认服务TCP端口,监听客户端连接。要是端口设置小于1024,比如1021,则需要root权限启动,不能用mongodb账号启动,否则报错。
  2. port = 27017

bind_ip:

  1. 绑定地址。默认是127.0.0.1,只能通过本地连接。进程绑定和监听来自这个地址上的应用连接。要是需要给其他的服务器连接,则需要注释掉这个或者把IP改成本机地址,可以用逗号分隔的列表绑定多个IP地址。
  2. bind_ip = 0.0.0.0

maxConns:

  1. 最大连接数。默认值:取决于系统限制。MongoDB中不会限制其自身的连接。当设置大于系统的限制,则无效,以系统限制为准。这对于客户端创建很多集合,允许连接超时而不关闭集合的时候,很有用。
  2. 控制流量峰值时的连接。
  3. ps:不能设置该值大于20000
  4. eg: maxConns = 100

objcheck:

  1. 强制验证客户端请求。强制验证客户端请求,确保客户端绝不插入无效文件到数据库中。对于嵌套文档的对象,会有一点性能影响。
  2. eg: objcheck = true noobjcheck = false

logpath:

  1. 指定日志文件,该文件将保存所有的日志记录,诊断信息。除非另有指定,mongod将所有的日志信息输出到标准输出。如果没有指定logappend,重启则日志会进行覆盖操作。
  2. logappend:写日志的模式,设置为true为追加。默认时覆盖。如果未指定此设置,启动时MongoDB将覆盖现有的日志文件。
  3. logappend = true

syslog:

  1. 日志输出都发送到主机的syslog系统,而不是标准输出到logpath指定日志文件。sysloglogpath不能一起用,会报错:Cant use both a logpath and syslog

pidfilepath = /var/run/mongo.pid:

  1. 进程ID,没有指定则启动时就没有PID文件,默认缺省。
  2. pidfilepath = /var/run/mongo.pid

ps: 平时用一点查一点,然后记一点,再加上一些自己遇到的查官方文档,最后汇聚成这样的一篇博客。若觉得有冒犯的,请私信或者留言,会著名。

MongoDB基础教程(安装、操作、配置)的更多相关文章

  1. MongoDB Windows环境安装及配置

    MongoDB一般安装 1.首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,目前的最新版本为2.6 安装包有zip和msi格式的,这里推荐下载zip格 ...

  2. Kali Linux常用服务配置教程安装及配置DHCP服务

    Kali Linux常用服务配置教程安装及配置DHCP服务 在Kali Linux中,默认没有安装DHCP服务.下面将介绍安装并配置DHCP服务的方法. 1.安装DHCP服务 在Kali Linux中 ...

  3. mongoDB数据库的安装与配置

    noSql数据库MongoDB的安装地址:https://www.mongodb.com/download-center?jmp=nav#community 选择相应的版本进行下载,在此以window ...

  4. MongoDB基础教程[菜鸟教程整理]

    MongoDB基础教程 ======================================================================================== ...

  5. 1. 初探MongoDB —— 介绍、安装和配置

    一.写在前面 之前一直以来,都是使用关系型数据库.也很早就听闻,当数据量大的时候,关系型数据库使用起来会有很多问题.诸如查询数据慢,加载花费时间长等等. 也早就耳闻NOSQL(NoSQL = Not ...

  6. MongoDB基础教程系列--未完待续

    最近对 MongoDB 产生兴趣,在网上找的大部分都是 2.X 版本,由于 2.X 与 3.X 差别还是很大的,所以自己参考官网,写了本系列.MongoDB 的知识还是很多的,本系列会持续更新,本文作 ...

  7. Spring Cloud Alibaba基础教程:Nacos配置的多文件加载与共享配置

    前情回顾: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方式> ...

  8. Spring Cloud Alibaba基础教程:Nacos配置的多环境管理

    前情回顾: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方式> ...

  9. MongoDB基础教程系列--目录结构

    最近对 MongoDB 产生兴趣,在网上找的大部分都是 2.X 版本,由于 2.X 与 3.X 差别还是很大的,所以自己参考官网,写了本系列.MongoDB 的知识还是很多的,本系列会持续更新,本文作 ...

  10. GSAP JS基础教程--TweenLite操作元素的相关属性

    今天来学习用TweenLite操作元素的各种属性,以Div为例,其他元素的操作也是一样的,只是可能一些元素有它们的特殊属性,就可能不同罢了.   代码里用详细注释,我就不再重复啦,大家看代码就可以啦! ...

随机推荐

  1. 微信小程序实时将less编译为wxss

    1.npm或者yarn全局安装wxss-cli npm install -g wxss-cli 2.运行waxes-cli命令(mp_wx为小程序目录) wxss ./mp_wx 实时监听mp_wx目 ...

  2. IGBT以及MOSFET驱动参数的计算方法

  3. c++的一些习惯

    1.显示转换:类型说明符(表达式),如a = int(z) 2.枚举类型enum:专门用来解决对数据的合法性检查问题,如一星期七天,如果用int/char等数据类型描述时,则需要对数据的合法性检查.声 ...

  4. redis协议规范

    好多年前看过redis的代码,那个时候还是2.6的版本,集群和哨兵还没加入正式代码,这几年redis发展的好快.简略翻译一篇文章redis的https://redis.io/topics/protoc ...

  5. Azure Cosmos DB (三) EF Core 操作CURD

    一,引言 接着上一篇使用 EF Core 操作 Azure CosmosDB 生成种子数据,今天我们完成通过 EF Core 实现CRUD一系列功能.EF Core 3.0 提供了CosmosDB 数 ...

  6. day39 Pyhton 并发编程02

    一.内容回顾 并发和并行的区别 并发 宏观上是在同时运行的 微观上是一个一个顺序执行 同一时刻只有一个cpu在工作 并行 微观上就是同时执行的 同一时刻不止有一个cpu在工作 什么是进程 一个运行中的 ...

  7. 界面酷炫,功能强大!这款 Linux 性能实时监控工具超好用!

    对于维护.管理Linux系统来说,它的性能监控非常重要,特别是实时监控数据,这个数据有利于我们判断服务器的负载压力,及时调整资源调配,也有助于更好的服务于业务.所以,今天民工哥给大家安利一款 Linu ...

  8. 【图论】HDU 5961 传递

    题目内容 题目链接 我们称一个有向图G是传递的当且仅当对任意三个不同的顶点a,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个竞赛图,当且仅当它是一个有向图 ...

  9. 【树形DP】ZJOI2008 骑士

    题目内容 洛谷链接 有\(n\)位骑士,每个人的战力可能不同,并且每一个人都有且仅有一个憎恨的人,互相憎恨的人不能在同一队中. 求组合为一个骑士队的最大战斗力. PS:可以去看看题目背景学学历史(雾) ...

  10. spring boot:redis+lua实现生产环境中可用的秒杀功能(spring boot 2.2.0)

    一,秒杀需要具备的功能: 秒杀通常是电商中用到的吸引流量的促销活动方式 搭建秒杀系统,需要具备以下几点: 1,限制每个用户购买的商品数量,(秒杀价格为吸引流量一般会订的很低,不能让一个用户全部抢购到手 ...