Centos下通过yum安装步骤如下:

声明:相对比那些用源码安装,少了配置和新建log和data目录,这种简单粗暴,

,创建仓库文件,
vi /etc/yum.repos.d/mongodb-org-3.4.repo
,复制下面配置,保存退出
[mongodb-org-3.4]
name=MongoDB Repository
   baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
   gpgcheck=
   enabled=
   gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
 3,yum安装
yum install -y mongodb-org 4,修改配置文件,别的机器也能访问,不止是 127.0.0.1
vi /etc/mongod.conf -----》bind_ip 默认是127.0.0.1 修改为 0.0.0.0 5,启动,停止
service mongo start, service mongo stop 6,日志目录位置 ---》 cat /var/log/mongodb/mongod.log
数据库文件 ----》 cat /var/lib/mongo 7,卸载 mongo ----> yum erase $(rpm -qa | grep mongodb-org)
连接mongo的可视化工具我用的是--robo3T 注意的是MongoVUE不支持mongodb3版本的

mongodb 常用命令:

  查看数据库
> show dbs
使用数据库
> use database-name
查看表
> show tables
查询数据
> db.table-name.find({})
查询条件
> db.table-name.find({'name':'zhangsan'})
建立索引
> db.table-name.ensureIndex({'name':1}) 1为升序,-1为降序
复合索引
> db.table-name.ensureIndex{{'name':1,'age':1}} 只查询name会索引。如果只查询age不会用到索引,如果想用索引前面必须有N个索引列
查看索引是否建立
> db.table-name.getIndexes()
删除索引
> db.table-name.dropIndex({'name':1})
管理索引,查看所有索引:
> db.system.index.find()
插入字段
> db.table-name.update({query},{$set:{'status':'1'}},false,true)
query:where条件
false: 字段存在不插入,默认为false
true: 只更新第一条记录,如果为true 全部更新
查找是否存在
> db.table-name.find({'name':{$exists:true}}) ----->查找name字段是否存在
删除文档
> db.table-name.remove({query})
query:删除的条件
修改字段名字
> db.table-name.update({query},{$rename:{'old-name':'new-name'}},false,true)
修改字段类型
> 如下命令是将hscourses表中的ClassID字段从整型转换到字符串型:
db.hscourses.find({'ClassID' : { $type : 16 }}).forEach(function(x) {x.ClassID = x.ClassID+'';db.hscourses.save(x); }) 
    >分组:mongo中group by

db.getCollection('bigdata').aggregate([
                                {$match:{"CtfId" : "152626198103082713"}},
                                {$group:{_id:'$CtfId',Name:{'$addToSet':'$Name'},Address:{'$addToSet':'$Address'}}
                                }])

       aggregate 为聚合:  $match 为条件类似于wherer。group为分组。_id是必填的分组项。 $addToSet 结果文档中插入值到一个数组中,但不创建副本。
如果显示多字段必须上聚合表达式($sum,$avg,$addToSet……)
       截取 Mobile字段包含\t的js写法          

db.bigdata.find({'table_type':'5','Mobile':/\t/}).forEach(function(x){
                          x.Mobile=x.Mobile.substring(0,x.Mobile.length-1);//将其转为string类型
                          db.bigdata.save(x);//保存
                          });

mongo 导入 json 或者csv 做法

声明:4G的 .sql文件(20050144条数据)导入mongodb 总共时间为 28分钟 + 25分钟 + 15分钟
①,28分钟: 在linux 中 source ./.sql目录 导入数据库
②,25分钟: 用Navicat for MySQL 导出格式为csv 或者json
③,15分钟: 用mongo自带的mongoimport命令 上传csv或者json
前2步傻瓜式操作,唯一注意的是②步:
json格式情况下: 4G大小的.sql文件,如果用navicat转为json大小为11G,11G的json上传mongo会 ‘/a’错误,实验200MB的没有问题
csv格式情况下: 4G大小的.sql文件,如果用navicat转为csv大小还是4G,其中csv会是乱码,不用管,直接上传mongo没有问题,
navicat导出的时候选择一定选择 ’包含列的标题‘ 后期上传名mongdb时候可以少填写参数为列
导入命令如下:
json: 
            mongoimport --db  table-name  --collection table-name  --file /test.json   
     csv:
mongoimport --db table-name  --collection table-name --type csv --headerline --ignoreBlanks  --file /test.csv  --numInsertionWorkers 4 mongoimport --db bigdata --collection test4 --type csv --columnsHaveTypes --fields "EMail.string(),password1.string(),CtfId.string(),password2.string()" --file /home/kdjkadmin/mydb_sql/1312306.csv
这个语句是把csv里面的int类型变为string类型。如果字符串身份证号再mongdo里面是 numberLong类型的,pymongo查numberlong类型 python2 用long()查询,python3 用int()。如果身份证中有x 只能再导入时候变为字符串类型
导出命令如下:
      json:

mongoexport  --db  table-name  --collection table-name  -o /test.json

      csv: 

          mongoexport  --db  table-name  --collection table-name  --csv  -f id,province,city   -o /test.csv
--csv 指要要导出为csv 格式,导出csv之后必须指明导出的列
-f 指明需要导出哪些列
-f 后面跟着字段名不能有空格。有空格话会报错(too many positional arguments)
    
参数说明
--db 指明使用的库, 本例中为” table-name”
          --collection 指明要导出的表, 本例中为”table-name”
--type 指明导入的类型,默认的为json
--headerline 仅适用于导入csv,tsv格式的数据,表示文件中的第一行作为数据头
--ignoreBlanks 忽略空白符
--file 文件的位置
--numInsertionWorkers 为了提高mongo的插入效率,采用mongodb推荐的(numInsertionWorkers)多线程操作。本质来说,就是将insert任务,拆分成多个线程来做。

												

Mongodb 3.4 + Centos6.5 配置 + mysql.sql转为csv 或 json导入和导出Mongo (64位系统)的更多相关文章

  1. Linux(centos6.8)配置Mysql环境

    1.下载mysql安装包 https://downloads.mysql.com/archives/community/ 2.查询mysql信息 [1]查询mysql是否已经安装 [root@plut ...

  2. win7 64位系统下 PL/SQL无法连接的问题

    第一步:下载oracle客户端 由于 PLSQL Developer 没有64位版本,所以在64位系统上运行该程链接64位Oracle时就会报错,笔者为这个问题纠结了好几天,后来通过请教Google ...

  3. 64位系统sql链接oracle

    在SQL Server 2008中连接Oracle,完成查询.插入操作 建立指向Oracle的连接 在32位的系统中sql链接oracle,在链接服务器里点击服务器对象,右键链接服务器,选择micro ...

  4. MySQL 8.0.20 安装教程图文详解(windows 64位)

    MySQL 8.0.20 安装教程图文详解(windows 64位)  更新时间:2020年05月09日 15:09:04   转载 作者:瘦肉粥不加糖     这篇文章主要介绍了MySQL 8.0. ...

  5. PL/SQL Developer连接Oracle 11g在Win8 64位系统下乱码

    PL/SQL Developer在64位系统上连接Oracle,需要安装32位Oracle client客户端,使用后,发现操作数据库出现乱码的情况.经过查找资料,解决此问题,方法如下: 需要在系统的 ...

  6. 如何在64位系统上安装SQL Server 2000

    如何在64位系统上安装SQL Server 2000? 现在用SQL Server 2000数据库的人少了吧?大都是SQL Server 2005/2008了.不过还是有需求的,今天一朋友就让我在他的 ...

  7. win8 64位系统,安装JDK的步骤及其环境配置

    工具/原料 jdk-8u51-windows-x64.exe 下载地址:::http://www.cr173.com/soft/55503.html#address jdk 安装步骤 1:到oracl ...

  8. PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验

    PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验 一.问题现象及解决方法 现象: 1.PL/SQL 无法登录64位数据库 2.在PL/SQL ...

  9. VS2010在WIN7 64位系统下架设网站及路由器配置

    步骤一:安装IIS 打开[控制面板]-[程序和功能],在左侧进入[打开或关闭windows功能],按照下图选择Internet信息项目下的子选项并安装: 步骤二:配置应用程序池 打开[控制面板]-[管 ...

随机推荐

  1. express的学习,与使用

    最近在学习vue的一个实战项目,碰到一个express,当时很萌,就随便看了看................ expres是基于node 的一个web框架, 首先可以找到它的官网照着学习 这里只讲一 ...

  2. prometheus client_golang使用

    序言 Prometheus是一个开源的监控系统,拥有许多Advanced Feature,他会定期用HTTP协议来pull所监控系统状态进行数据收集,在加上timestamp等数据组织成time se ...

  3. JavaWeb框架SSH_Struts2_(二)

    1.  Struts2的核心配置(详解) 本章内容目录: 配置struts.xml文件 struts.xml文件 常量配置 包配置 包含配置 Action配置 实现Action控制类 配置Action ...

  4. Adobe阅读器漏洞(adobe_cooltype_sing)学习研究

    实验环境:Kali 2.0+Windows XP sp3+Adobe Reader 9.0.0 类别:缓冲区溢出 描述:这个漏洞针对Adobe阅读器9.3.4之前的版本,一个名为SING表对象中一个名 ...

  5. SpringCloud接入EDAS——服务发现篇

    旁白 很久没有写技术文章了,最近不是写水文就是写小说.说到底,还是最近很少研究技术的缘故,已经到了江郎才尽的地步了. 不过,LZ无意间看到自己团队的小伙伴写的一些文章,觉得还是不错的,于是便动了心思, ...

  6. 我们是80后 golang入坑系统

    现在这个系列,已经开始两极分化了. 点赞的认为风格轻松,看着不困.反之,就有人嫌写的罗里吧嗦,上纲上线.所以善意提醒,里面不只是技术语言,还有段子.专心看技术的,千万别点!别怪我没提醒!差点忘说,版权 ...

  7. 一个高性能异步socket封装库的实现思路 (c#)

    前言 socket是软件之间通讯最常用的一种方式.c#实现socket通讯有很多中方法,其中效率最高就是异步通讯. 异步通讯实际是利用windows完成端口(IOCP)来处理的,关于完成端口实现原理, ...

  8. Maven多模块的开发项目搭建

    系统越复杂,所有的业务逻辑都放在一个项目里,各个包之间的业务逻辑相互调用,这样添加了开发成本,同时对之后的系统维护,错误排查带来一定的麻烦. 通过Maven的多模块开发,把一个系统拆分成多个模块,通过 ...

  9. java二进制相关基础

    转载请注明原创出处,谢谢! 说在前面 之前在JVM菜鸟进阶高手之路十(基础知识开场白)的时候简单提到了二进制相关问题,最近在看RocketMQ的源码的时候,发现涉及二进制的内容蛮多,jdk源码里面也是 ...

  10. Python函数篇(2)-递归函数、匿名函数及高阶函数

    1.全局变量和局部变量 一般定义在程序的最开始的变量称为函数变量,在子程序中定义的变量称为局部变量,可以简单的理解为,无缩进的为全局变量,有缩进的是局部变量,全局变量的作用域是整个程序,而局部变量的作 ...