Mongo Package Components

Reference

服务启动

# 查看帮助
$ mongod --help
# 删除服务
$ mongod --remove
# windows service 安装
$ mongod --config "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg" --install
# 启动 Windows 服务
$ net start MongoDB

MongoDB 数据库/表备份

Note: 以下的命令不是在 Mongo Shell 中执行的命令,而是在 Linux shell 中执行的命令**

数据库备份 mongodump

$ mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 
# 如果没有设置用户名和密码,可以去掉-u和-p。
# 如果导出本机的数据库,可以去掉-h。	
# 如果是默认端口,可以去掉--port。
# 如果想导出所有数据库,可以去掉-d。
	
# 例如导出所有数据库:
$ mongodump /usr/zhangqiang/mongodb/

通过备份还原数据库 mongorestore

$ mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径

# 参数说明
    
    --drop # 先删除所有的记录,然后恢复

# 例如恢复所有数据库:	
    
$ mongorestore /usr/zhangqiang/mongodb/	

# 恢复指定的数据库
    
$ mongorestore -d test /usr/zhangqiang/mongodb/test/

导出表/表中某些字段 mongoexport

mongoexport

$ mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -q 条件导出 --type=csv -o 文件名

# 参数说明
    
    -f          # 导出指定字段,以逗号分割,-f name,email,age导出name,email,age这三个字段
    -q          # 可以根查询条件导出,-q '{ "uid" : "100" }' 导出uid为100的数据	
    --type=csv  # 表示导出的文件格式为csv的,这个比较有用,因为大部分的关系型数据库都是支持csv,在这里有共同点

# 例如导出表 visit_data

$ mongoexport  -d smarket -c visit_vector  -o /usr/zhangqiang/mongodb/smarket/visit_vector.dat	

# 导出部分字段 _id,school,teacher

$ mongoexport -d smarket -c visit_vector --type=csv -f _id,school,teacher -o /usr/zhangqiang/mongodb/smarket/visit_vector.csv

导入表/表中某些字段 mongoimport

mongoimport

# 还原整表导出的非csv文件

$ mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名

# 参数说明

    --upsert # 插入或者更新现有数据 deprecated in 3.4.x
    --mode upsert # 替代弃用的 --upsert 操作
    --mode insert # 
    --mode merge # 

# 例如:

$ mongoimport -d smarket -c visit_vector visit_vector.dat

# 还原部分字段的导出文件
    
$ mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名  

    --upsertFields teahcher_id # 指定哪一列是唯一标识,默认使用 _id 作为唯一标识

    --upsertFields # 如果不指定列名,相当于 --mode upsert
    
# 还原导出的csv文件

$ mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名

$ mongoimport -d jx_edu -c visit_real_organization_info --type csv --headerline --columnsHaveTypes organization.csv

    --headerline # csv 文件第一行为列名
    
    --columnsHaveTypes (New in version 3.4.x) # 指定导入字段的数据类型,一旦使用此参数,csv文件中的所有列名都得指定类型,否则会提示未知列类型。
    
    # 使用方式:
    
    # 此操作只支持 csv 或者 tsv 导入.
    
    # 需要与 --fields 加 --fieldFile, 或者 --headerline 同时使用来指定每个字段的数据类型
    
    # csv 或者 tsv 文件列名的字段的书写格式如下表
type Supported Arguments Example Header Field
auto() None. misc.auto()
binary() base32 (RFC4648 encoding schema)、
base64 (RFC4648 encoding schema)、
hex
user thumbnail.binary(base64)
boolean() None. verified.boolean()
date() Alias for date_go(). created.date(2006-01-02 15:04:05)
date_go() Go Language time.Parse format created.date_go(2006-01-02 15:04:05)
date_ms() Microsoft SQL Server FORMAT format. created.date_ms(yyyy-MM-dd H:mm:ss)
date_oracle() Oracle Database TO_DATE format. created.date_oracle(YYYY-MM-DD HH24:MI:SS)
decimal() None price.decimal()
double() None. revenue.double()
int32() None. followerCount.int32()
int64() None. bigNumber.int64()
string() None. zipcode.string()

MongoDB 数据库/表节点之间的数据复制

MongoDB自带了clone一族JavaScript函数来进行数据的复制,这里我们总结了MongoDB在不同主机间复制数据库和集合的教程,列举出了一些主从复制操作中常用的重要函数: 以下的命令是在 Mongo Shell 中执行的命令

在不同的mongodb实例间复制数据

> db.cloneCollection(from, collection, query)

# 参数说明

    from:string  		# 包含需要复制的表的mongodb实例主机名
    collection:string           # 数据实例中需要复制的表名,该命令只可以复制远程mongodb实例上相同数据库名称的表
    query:document 		# 可选的选项。标准的查询语句过滤掉不需要的文档
		
# 例如:

> db.cloneCollection("10.4.120.83", "visit_data", {"school" : "第一实验小学"})

复制远程主机的数据库到本地,该命令假设远程mongodb实例中拥有与本地相同的数据库名称。

> db.cloneDatabase(hostname)

# 参数说明

    hostname:string  	# 包含需要复制的数据库的mongodb实例主机名
			
# 例如:
    
> use smarket
> db.dropDatabase();
> db.cloneDatabase("10.4.120.83");

从远程主机复制数据库到本地,或从本地复制数据库到远程主机

> db.copyDatabase(fromdb, todb, fromhost, username, password, mechanism)
		
# 参数说明

    fromdb:string  	# 源数据库名称
    todb:string  	# 目标数据库名称
    fromhost:string  	# 可选项,源数据库的主机名。如果是同一主机,忽略该选项
    username:string  	# 可选项,源主机名用户名
    password:string  	# 可选项,源主机名用户名对应密码
    mechanism:string	# 可选项,3.0版本新出的选项,在源数据库主机上验证用户名和密码的机制。MONGODB-CR 或者 SCRAM-SHA-1,
			# 如果 MongoDB 的版本号为3.0及以上,默认为 SCRAM-SHA-1,否则默认为 MONGODB-CR
			# 从装有3.0版本或以上的数据库实例复制到装有2.6.x版本数据库的主机时指定MONGODB-CR来验证。
			# 例如拷贝一个强制进行验证的mongod实例的数据库

相同数据库实例中复制表

> db.source_collection.find().forEach(function(x){db.target_collection.insert(x);})

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,一毛也是爱

打开支付宝扫一扫,即可进行扫码打赏哦