Reference
- MongoDB Package Components
Reference -> MongoDB Package Components -> ...
服务启动
# 查看帮助
$ 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 -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
# 还原整表导出的非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);})