mongodb命令

【MongoDB】索引

一世执手 提交于 2020-02-15 15:45:41
目录 1.索引简介 2.索引种类 2.1 单一字段索引 2.2 字段值唯一索引 2.3 多字段索引 2.4 文本索引 2.5 哈希索引 2.6 ensureIndex()索引 3.与索引相关的其他方法 1.索引简介 MongoDB是基于集合建立索引(index),建立索引的目的是为了提高查询速度。MongoDB的索引基于B-tree数结构及对应算法形成的。 默认情况下,在建立集合的同时,MongoDB数据库自动为 集合_id建立唯一索引 ,可以避免重复插入同一_id值的文档记录。 2.索引种类 2.1 单一字段索引 语法:db.collection_name.createIndex({ : }) 说明:对一个集合文档的键建立索引,key为键名,n=1为升序,n=-1为降序 示例: // 插入记录 db.bookInfo.insert( { _id:100, title:"书单1", amount:120, unit:"RMB", detail:[ {name:"西游记",price:98}, {name:"三国演义",price:120} ], overview:{shopName:"当当网",shopNum:37} } ) // 为name建立索引 db.custInfo.createIndex( { title:1 //正序 } ) // 嵌套文档建立索引 db

MongoDB 查询优化分析

ε祈祈猫儿з 提交于 2020-02-14 00:25:53
摘要: 在MySQL中,慢查询日志是经常作为我们优化查询的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是开启Profiling功能。该工具在运行的实例上 收集有关 MongoDB的 写操作 , 游标 , 数据库命令等,可以在数据库级别开启该工具,也可以在实例级别开启。 该工具会把收集到的所有都写入到 system.profile 集合中,该集合是一个 capped collection 。 更多的信息见: http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/ 和 http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=207007436&idx=1&sn=a63601d81c8d112228c96ad9fffb031c&scene=21#wechat_redirect 使用说明: 1:Profiling级别说明 0:关闭,不收集任何数据。 1:收集慢查询数据,默认是100毫秒。 2:收集所有数据 2:开启Profiling和设置 1:通过mongo shell: #查看状态:级别和时间 drug:PRIMARY> db.getProfilingStatus() { "was" : 1, "slowms" : 100 }

win10 安装 MongoDB 社区版

我只是一个虾纸丫 提交于 2020-02-13 23:50:34
前段时间,mongodb 社区版在 mac 上玩感觉很爽,mac 上安装 mongodb 社区版再也不用发愁配置了,安装好后,直接在终端输入 mongo ,就能操作数据了。所以今天也在 win10 的这台电脑上操作一把,在社区版之前,每次操作都要录入一大串的路径和参数,烦死了。因为我的编辑器是 VCode,希望能使用内置的终端命令打开一个 mongo 窗口而不是多个。 MongoDB服务,开机自启动 社区版的安装,把手动启动服务这个麻烦事省略了。从MongoDB 4.0开始,可以在安装期间将MongoDB设置为 windows服务 ,安装完成后系统会自启动 MongoDB服务的。 Run the service as Network Service user 以网络服务用户身份运行服务(默认选中) 这是Windows内置的Windows用户帐户,安装成功后默认直接启动服务 Install MongoD as a Service 将 MongoDB 安装为本地的服务(默认选中) 配置 mongod.config 这个配置文件里面包括mogoDB服务系统的log文件和MongoDB数据库文件,目录可以自定义。我是这样写的: ##database directory   dbpath=D:\Code\mongodb\data   ##log file   logpath=D:\Code

Mongodb profile(慢查询日志)

对着背影说爱祢 提交于 2020-02-13 15:28:55
在MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是MongoDB Database Profiler。所以MongoDB 不仅有,而且还有一些比MySQL的Slow Query Log更详细的信息。 开启 Profiling 功能 有两种方式可以控制 Profiling 的开关和级别,第一种是直接在启动参数里直接进行设置。 启动MongoDB时加上–profile=级别 即可。 也可以在客户端调用 db.setProfilingLevel(级别) 命令来实时配置,Profiler 信息保存在 system.profile 中。我们可以通过db.getProfilingLevel()命令来获取当前的Profile级别,类似如下操作 db.setProfilingLevel(2); 上面profile的级别可以取0,1,2 三个值,他们表示的意义如下: 0 – 不开启 1 – 记录慢命令 (默认为>100ms) 2 – 记录所有命令 Profile 记录在级别 1 时会记录慢命令,那么这个慢的定义是什么?上面我们说到其默认为100ms,当然有默认就有设置,其设置方法和级别一样有两种,一种是通过添加–slowms 启动参数配置。第二种是调用db.setProfilingLevel时加上第二个参数: db

MongoDB sharding cluster Step by Step

梦想与她 提交于 2020-02-12 05:56:13
本篇讲述MongoDB的 Sharding Cluster 的详细步骤,按着做理论上不会有什么错误。 关于说着里边的参数、变量、和设置,没有用到很多,只用到了关键的一些,其他的可以参考MongoDB的官方文档。 后者自己google,baidu,这里不想多讲。同样废话不多说,直接上菜。 哦,对了Sharding Cluster里边一定要弄明白的三个概念, DataNode, ConfigServer, Router。如图: 好了, 配置正式开始: 1, 配置Shard Data Node, 即我们刚才说的 Replica Set 1)自己编写 mongo_sharding_dataNode_1.conf 文件的内容: bind_ip=localhost port=27022 dbpath=D:\MongoDB\data\dbnode1 logpath=D:\MongoDB\log\node1.log logappend=true replSet=testsh1 shardsvr=true 2)同样的文件,改掉bind_ip,port,dbpath,logpath的值,做成mongo_sharding_dataNode_2.conf 这样存数据的两个库就有个一个primary,一个secondary。 3)在Replica Set中还要有一个arbitrary,所以接着编写第三个文件

连接MongoDB报错:https://mp.weixin.qq.com/s?__biz=MzI1NjcxNDQyMg==&mid=2247488105&idx=1&sn=8a4da610736335

拈花ヽ惹草 提交于 2020-02-12 03:49:41
背景:   我想要通过 MongoDB的图形化界面工具--Compass或者直接使用Windows命令窗口 来连接Linux上开启的MongoDB服务(确定MongoDB服务已经开启),但是无论使用 Compass 还是 windows命令窗口 都无法连接成功。 异常:   在使用 mongo 命令来连接MongoDB数据库的时候遇到下图中的错误: 解决:   我在Linux中开启MongoDB服务的时候使用的是 配置文件 的的方式开启的。然后我查看了一下配置文件中的 bindIP 参数,此参数如果不写默认是 localhost ,如果是连接本地mongodb服务的话确实没有什么问题,但是我的mongodb是放在外网上的,所以需要修改 bindIP 参数( 可以输入0.0.0.0或者具体的外网IP地址 ) 在linux上面查看自己的外网IP: crul ident . me 输入以上命令之后就会返回你的外网ip地址,例如:120.77.210.14 然后在你window版本的mongodb的 bin 目录下输入 cmd 召唤windows命令窗口,输入下面命令: mongo -- host = 120.77 .210 . 14 ( 也就是你的外网ip ) : 27017 ( 默认的端口就是 27017 ,如果自己另外指定了端口则此处调整为指定端口 ) 如下图所示:

Linux部署MongoDB

你说的曾经没有我的故事 提交于 2020-02-11 23:44:31
下载安装包 打开网站 https://www.mongodb.com/download-center/community 查找与Linux版本一致的MongoDB安装包。我这里选择安装包格式为tgz压缩文件,版本是RHEL7.0 Linux 64-bit X64 回到Xshell控制台,输入下载命令 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.3.tgz 这时候会在当前工作目录下将mongodb-linux-x86_64-rhel70-4.2.3.tgz下载下来。 如下图: 解压安装包 输入以下命令 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.3.tgz 将解压后的目录剪切到一个新目录 mongodb mv mongodb-linux-x86_64-rhel70-4.2.3 mongodb 创建数据库目录 MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。我们到mongodb下新建data/db目录 这里我把data目录也放置mongodb/mongodb下 cd mongodb mkdir -p data/db 创建日志目录

MongoDB之聚合aggregate操作

风流意气都作罢 提交于 2020-02-11 19:54:42
关于mongodb的高级操作,包括聚合、主从复制、分片、备份与恢复、MR。 一、聚合 aggregate 聚合(aggregate)主要用于计算数据,类似sql中的sum()、avg() 语法 db.集合名称.aggregate([{管道:{表达式}}]) 管道: 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的输入 ps ajx | grep mongo 在mongodb中,管道具有同样的作用,文档处理完毕后,通过管道进行下一次处理 常用管道 $group:将集合中的文档分组,可用于统计结果 $match:过滤数据,只输出符合条件的文档 $project:修改输入文档的结构,如重命名、增加、删除字段、创建计算结果 $sort:将输入文档排序后输出 $limit:限制聚合管道返回的文档数 $skip:跳过指定数量的文档,并返回余下的文档 $unwind:将数组类型的字段进行拆分 表达式:处理输入文档并输出 语法 表达式:'$列名' 常用表达式 $sum:计算总和,$sum:1同count表示计数 $avg:计算平均值 $min:获取最小值 $max:获取最大值 $push:在结果文档中插入值到一个数组中 $first:根据资源文档的排序获取第一个文档数据 $last:根据资源文档的排序获取最后一个文档数据 二、$group 三、$match 四、

MongoDB(2)---(linux版本)MongoDB下载与安装

北战南征 提交于 2020-02-10 18:37:21
上一篇: MongoDB(2)—MongoDB下载与安装(Windows版本) 1.下载MongoDB的Linux版本? Linux版本的MongoDB下载链接 2.解压缩安装MongoDB 1)将下载好的Linux版本的MongoDB上传到Linux中的 etc 目录下 2)输入以下命令进行解压缩 tar - zxvf mongodb - linux - x86_64 - 4.0 .9 . tgz 解压缩之后得到下面蓝色的文件 3)输入以下命令修改文件名称 mv mongodb - linux - x86_64 - 4.0 .9 mongodb - 4.0 .9 4)移动 mongodb-4.0.9 到指定文件夹 local 中 mv mongodb - 4.0 .9 / usr / local / 5)在bin目录同级创建新文件夹 data 和 db 创建 data 文件夹 mkdir data 在 data 文件夹中新建建 db 文件夹 mkdir db 6)在 bin 目录同级创建mongodb的日志文件 mkdir log 7)在bin目录的同级创建文件夹 config mkdir config 在 config 文件夹中新建mongodb的配置文件 vi mongod . conf 将下面配置内容粘贴到 mongod.conf 中 storage : # mongod

MongoDB 使用B树

你说的曾经没有我的故事 提交于 2020-02-10 18:13:49
概述 MongoDB 是一个通用的、面向文档的分布式数据库[^1],这是官方对 MongoDB 介绍。区别于传统的关系型数据库 MySQL、Oracle 和 SQL Server,MongoDB 最重要的一个特点就是 『面向文档』 ,由于数据存储方式的不同,对外提供的接口不再是被大家熟知的 SQL,所以被划分成了 NoSQL,NoSQL 是相对 SQL 而言的,很多我们耳熟能详的存储系统都被划分成了 NoSQL,例如:Redis、DynamoDB[^2] 和 Elasticsearch 等。 NoSQL 经常被理解成没有 SQL(Non-SQL)或者非关系型(Non-Relational)[^3],不过也有人将其理解成不只是 SQL(Not Only SQL)[^4],深挖这个词的含义和起源可能没有太多意义,这种二次解读很多时候都是为营销服务的,我们只需要知道 MongoDB 对数据的存储方式与传统的关系型数据库完全不同。 MongoDB 的架构与 MySQL 非常类似,它们底层都使用了可插拔的存储引擎以满足用户的不同需求,用户可以根据数据特征选择不同的存储引擎,最新版本的 MongoDB 使用了 WiredTiger 作为默认的存储引擎[^5]。 作为 MongoDB 默认的存储引擎,WiredTiger 使用 B 树作为索引底层的数据结构,但是除了 B 树之外,它还支持 LSM