一、引言

  前几天写了MongoDB数据库的聚合。一说到“聚合”,用过关系型数据库的人都应该知道它是一个什么东西,主要是用于对数据分类汇总和统计。大家都知道,做为DBA还有另一个重要的任务,那就是对数据库进行备份,以备当数据库发生损坏的时候,我们可以还原到以前的某个时刻,防止数据的丢失。今天我就来抛砖引玉,简单的说一说MongoDB文档数据库中的“备份-还原”的概念。

二、简介

  说起来数据库的“备份-还原”,在RDBMS系统中,都有很好的支持,也有很多选项可以设置,功能强大,也能自动完成大部分的备份功能,只要当初设置好了就可以了。对于MongoDB文档型的数据库来说,情况有一些不一样。在MongoDB中,要想对数据进行备份操作,需要使用脚本来执行命令完成,还原的的工作也是一样的,这是它本身支持的“备份-还原”的工作,相对RDBMS系统来说,要简单很多,不能自动完成。真的不能进行设置,来自动完成“备份和还原”的操作吗?当然可以,只是我们需要使用第三的软件才可以,而且功能越强大的,收费有的就越多,免费的也有,功能一般了,但是完成“备份-还原”的工作没问题。

接下来我们就开始说说MongoDB自己的、原生态的“备份-还原”是如何实现的,脚本很简单。mongodump命名主要完成数据的备份工作,mongorestore命令主要完成数据库的还原操作。就这两个命名,是不是很简单,那就开始我们今天的正文吧。

三、数据库的备份和还原

1、MongoDB数据库的备份

1.1、mongodump命令脚本语法如下:

>./mongodump -h dbhost -d dbname -o dbdirectory

-h:--host【--host <hostname><:port>, -h <hostname><:port>】

MongoDB所在服务器地址,默认地址:localhost(127.0.0.1),当然也可以指定端口号:localhost:27017

-d:--db【--db <database>, -d <database>】

需要备份的数据库实例,例如:school,这个数据库是我自己建立的,所以是该备份的

-o:--out <path>【 --out <path>, -o <path>】

备份的数据存放位置,例如:./databaseBack,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

-u:--username <username>【--username <username>, -u <username>】

指定用于向使用认证的MongoDB数据库认证的用户名,与--password和--authenticationDatabase结合使用

-p:--password <password>【--password <password>, -p <password>】

指定用于向使用认证的MongoDB数据库认证的密码。与--username和 --authenticationDatabase选项结合使用。

-c:--collection <collection>【--collection <collection>, -c <collection>】

指定要备份的集合。如果不指定,则会将指定数据库或实例中的所有集合备份。

--port <port>:

指定MongoDB实例监听客户连接的TCP端口号。端口的默认值:27017

--gzip:

MongoDB3.2或者以上的版本,可以进行压缩输出,如果mongodump指定导出到目录,则该选项会将每个文件都压缩,并添加.gz后缀;如果mongodump指定导出到文档或标准输出流,则该选项会压缩到文档或输出流中

--authenticationDatabase:【--authenticationDatabase <dbname>】

如果您未指定身份验证数据库,则mongodump会假定指定要导出的数据库保存用户的凭据。如果您未指定要导出的身份验证数据库或数据库,则mongodump假定admin数据库保存用户的凭据。

--authenticationMechanism:【 --authenticationMechanism <name>】

默认值: SCRAM-SHA-1

1.2、实例代码

  1】、登陆MongoDB的客户端,查看school数据库当前的详情

            //登陆MongoDB的客户端
[root@linux bin]# ./mongo --host=192.168.127.130 --port=
MongoDB shell version v3.6.3
connecting to: mongodb://192.168.127.130:27017/
MongoDB server version: 3.6.
Server has startup warnings:
--13T11::09.721+ I CONTROL [initandlisten]
--13T11::09.721+ I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
--13T11::09.721+ I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
--13T11::09.721+ I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
--13T11::09.721+ I CONTROL [initandlisten]
--13T11::09.723+ I CONTROL [initandlisten]
--13T11::09.723+ I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
--13T11::09.723+ I CONTROL [initandlisten] ** We suggest setting it to 'never'
--13T11::09.723+ I CONTROL [initandlisten] //显示当前数据库列表
> show dbs
admin .000GB
config .000GB
local .000GB
school .000GB //---这个数据库就是我们要备份的 //切换到school数据库
> use school
switched to db school //显示当前school数据库下有多个集合
> show tables
geoInstance
users //当前两个集合都有数据
> db.users.find()
{ "_id" : ObjectId("5b1e044733091e826f7c2c74"), "title" : "MongoDb Overview", "description" : "Mongodb is not sql database", "author" : "huangFeiHong", "url" : "http://www.huangfeihong.com", "tags" : [ "mongodb", "database", "NoSql" ], "likes" : , "quantity" : }
{ "_id" : ObjectId("5b1e044733091e826f7c2c75"), "title" : "NoSql Overview", "description" : "No sql database is very fast", "author" : "huangFeiHong", "url" : "http://www.huangfeihong.com", "tags" : [ "mongodb", "database", "NoSql" ], "likes" : , "quantity" : }
{ "_id" : ObjectId("5b1e044733091e826f7c2c76"), "title" : "Log4Net Overview", "description" : "log4net is not sql database", "author" : "linChong", "url" : "http://www.linchong.com", "tags" : [ "log", "net", "NoSQL" ], "likes" : , "quantity" : }
{ "_id" : ObjectId("5b1e1bfb33091e826f7c2c77"), "title" : "MongoDb Higher", "description" : "Mongodb is not sql database", "author" : "huangFeiHong", "url" : "http://www.huangfeihong.com", "tags" : [ "mongodb", "database", "NoSql" ], "likes" : , "quantity" : }
{ "_id" : ObjectId("5b1e1bfb33091e826f7c2c78"), "title" : "NoSql Redis Overview", "description" : "No sql database is very fast", "author" : "linChong", "url" : "http://www.linchong.com", "tags" : [ "redis", "database", "NoSql" ], "likes" : , "quantity" : }
{ "_id" : ObjectId("5b1e1bfb33091e826f7c2c79"), "title" : "Memcached Overrivew", "description" : "Memcached is sql database", "author" : "wuSong", "url" : "http://www.wusong.com", "tags" : [ "memcached", "cache", "NoSQL" ], "likes" : , "quantity" : }
>
>
> db.geoInstance.find()
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e03"), "loc" : [ , ] }
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e04"), "loc" : [ , ] }
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e05"), "loc" : [ , - ] }
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e06"), "loc" : [ -, ] }
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e07"), "loc" : { "x" : , "y" : } }
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e08"), "loc" : { "lng" : -9.2, "lat" : 21.3 } }

  2】、退出MongoDB的客户端,我们要创建保存备份文件的目录

            //退出MongoDB的客户端
> exit
bye
[root@linux bin]# //当前目录结构
[root@linux bin]# pwd
/root/application/program/mongodb/mongodb-linux-x86_64-3.6./bin
[root@linux bin]# databaseBack //创建保存备份文件的目录名称 //已经创建好的目录结构,databaseBack是备份目录
[root@linux bin]# ls
bsondump datas logs mongod mongodump mongofiles mongoperf mongorestore mongostat
databaseBack install_compass mongo mongodb.conf mongoexport mongoimport mongoreplay mongos mongotop

  3】、开始备份数据库,因为我们使用的是客户端,要写完整的地址,在MongoDB服务器端就可以省略

            //代码很简单
[root@linux bin]# ./mongodump -h 192.168.127.130: -d school -o ./databaseBack
--13T11::00.816+ writing school.geoInstance to
--13T11::00.817+ writing school.users to
--13T11::00.821+ done dumping school.geoInstance ( documents)
--13T11::00.821+ done dumping school.users ( documents) //查看备份文件
[root@linux bin]# ls ./databaseBack
school
[root@linux bin]# ls ./databaseBack/school
geoInstance.bson geoInstance.metadata.json users.bson users.metadata.json

  4】、以下操作将创建一个只包含名为school的数据库中名为users的集合的转储文件。 在这种情况下,数据库在端口27017上的192.168.127.130运行:

            [root@linux bin]# ./mongodump -h 192.168.127.130: --db school --collection users -o ./backCollection
--13T13::46.702+ writing school.users to
--13T13::46.706+ done dumping school.users ( documents)
[root@linux bin]# ls ./backCollection
school
[root@linux bin]# ls ./backCollection/school
users.bson users.metadata.json
[root@linux bin]#

  5】、要将转储输出到存档文件,请使用--archive选项和存档文件名运行mongodump。 例如,以下操作将创建一个包含school数据库转储的文件school.20180613.archive。

            [root@linux bin]# ./mongodump -h 192.168.127.130: --archive=./backArchiveFile/school..archive --db school
--13T13::51.953+ writing school.geoInstance to archive './backArchiveFile/school.2018613.archive'
--13T13::51.955+ writing school.users to archive './backArchiveFile/school.2018613.archive'
--13T13::51.994+ done dumping school.geoInstance ( documents)
--13T13::51.997+ done dumping school.users ( documents)
[root@linux bin]# ls ./backArchiveFile/
school..archive

          6】、要压缩输出转储目录中的文件,请使用新的--gzip选项运行mongodump。 例如,以下操作将压缩文件输出到默认转储目录。

            [root@linux bin]# ./mongodump -h 192.168.127.130: --db school --gzip -o ./backZip
--13T14::39.674+ writing school.geoInstance to
--13T14::39.675+ writing school.users to
--13T14::39.682+ done dumping school.geoInstance ( documents)
--13T14::39.684+ done dumping school.users ( documents) //显示压缩文件
[root@linux bin]# ls ./backZip/school
geoInstance.bson.gz geoInstance.metadata.json.gz users.bson.gz users.metadata.json.gz

          7】、想要通过mongodump命令将压缩的文件输出到指定目录,请将--gzip选项与--archive选项一起使用,并指定压缩文件的名称。

            [root@linux bin]# ./mongodump -h 192.168.127.130: --archive=./backZip/school..gz --db school --gzip
--13T14::57.311+ writing school.geoInstance to archive './backZip/school.2018613.gz'
--13T14::57.312+ writing school.users to archive './backZip/school.2018613.gz'
--13T14::57.346+ done dumping school.geoInstance ( documents)
--13T14::57.349+ done dumping school.users ( documents) [root@linux bin]# ls ./backZip/
school..gz

    2、MongoDB数据库的还原

  2.1、mongorestore命令脚本语法如下:

     >mongorestore -h <hostname><:port> -d dbname <path>

--host <:port>, -h <:port>:

MongoDB所在服务器地址,默认为: localhost:27017

--db , -d :

需要恢复的数据库实例,例如:school,当然这个名称也可以和备份时候的不一样,比如school3

--drop:

还原的时候,先删除当前的数据,然后还原备份的数据。也就是说,还原后,成功备份之后再添加或者修改的数据都会被删除,慎用哦!

<path>:

mongorestore 最后的一个参数,设置备份数据所在位置,如:./databaseBack

你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。

--dir:

指定备份数据的目录地址

你不能同时指定 <path> 和 --dir 选项。

2.2、示例代码

          1】、上文已经成功备份了数据库,现在我们要登陆MongoDB客户端把我们的school数据库删除。

            //登陆MongoDB客户端,显示当前数据库列表
[root@linux bin]# ./mongo --host=192.168.127.130 --port=
MongoDB shell version v3.6.3
connecting to: mongodb://192.168.127.130:27017/
MongoDB server version: 3.6.
Server has startup warnings:
--13T11::09.721+ I CONTROL [initandlisten]
--13T11::09.721+ I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
--13T11::09.721+ I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
--13T11::09.721+ I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
--13T11::09.721+ I CONTROL [initandlisten]
--13T11::09.723+ I CONTROL [initandlisten]
--13T11::09.723+ I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
--13T11::09.723+ I CONTROL [initandlisten] ** We suggest setting it to 'never'
--13T11::09.723+ I CONTROL [initandlisten]
> show dbs
admin .000GB
config .000GB
local .000GB
school .000GB
> //删除school数据库
> use school
switched to db school
> db.dropDatabase()
{ "dropped" : "school", "ok" : }
>
>
> show dbs
admin .000GB
config .000GB
local .000GB
> //退出MongoDB客户端
> exit
bye
[root@linux bin]#

          2】、我们开始还原我们的school数据库吧,我们从集合来恢复数据库。

            //还原users集合
[root@linux bin]# ./mongorestore -h 192.168.127.130: --collection users --db school ./databaseBack/school/users.bson
--13T13::52.118+ checking for collection data in databaseBack/school/users.bson
--13T13::52.120+ reading metadata for school.users from databaseBack/school/users.metadata.json
--13T13::52.148+ restoring school.users from databaseBack/school/users.bson
--13T13::52.218+ no indexes to restore
--13T13::52.218+ finished restoring school.users ( documents)
--13T13::52.219+ done //还原geoInstance集合
[root@linux bin]# ./mongorestore -h 192.168.127.130: --collection geoInstance --db school ./databaseBack/school/geoInstance.bson
--13T13::26.353+ checking for collection data in databaseBack/school/geoInstance.bson
--13T13::26.358+ reading metadata for school.geoInstance from databaseBack/school/geoInstance.metadata.json
--13T13::26.386+ restoring school.geoInstance from databaseBack/school/geoInstance.bson
--13T13::26.456+ restoring indexes for collection school.geoInstance from metadata
--13T13::26.475+ finished restoring school.geoInstance ( documents)
--13T13::26.475+ done

          3】、查看一下我们还原的数据。       

            [root@linux bin]# ./mongo --host=192.168.127.130 --port=
MongoDB shell version v3.6.3
connecting to: mongodb://192.168.127.130:27017/
MongoDB server version: 3.6.
Server has startup warnings:
--13T11::09.721+ I CONTROL [initandlisten]
--13T11::09.721+ I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
--13T11::09.721+ I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
--13T11::09.721+ I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
--13T11::09.721+ I CONTROL [initandlisten]
--13T11::09.723+ I CONTROL [initandlisten]
--13T11::09.723+ I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
--13T11::09.723+ I CONTROL [initandlisten] ** We suggest setting it to 'never'
--13T11::09.723+ I CONTROL [initandlisten]
>
>
> show dbs
admin .000GB
config .000GB
local .000GB
school .000GB
>
>
> use school
switched to db school
>
> show tables
geoInstance
users
>
>
> db.users.find()
{ "_id" : ObjectId("5b1e044733091e826f7c2c74"), "title" : "MongoDb Overview", "description" : "Mongodb is not sql database", "author" : "huangFeiHong", "url" : "http://www.huangfeihong.com", "tags" : [ "mongodb", "database", "NoSql" ], "likes" : , "quantity" : }
{ "_id" : ObjectId("5b1e044733091e826f7c2c75"), "title" : "NoSql Overview", "description" : "No sql database is very fast", "author" : "huangFeiHong", "url" : "http://www.huangfeihong.com", "tags" : [ "mongodb", "database", "NoSql" ], "likes" : , "quantity" : }
{ "_id" : ObjectId("5b1e044733091e826f7c2c76"), "title" : "Log4Net Overview", "description" : "log4net is not sql database", "author" : "linChong", "url" : "http://www.linchong.com", "tags" : [ "log", "net", "NoSQL" ], "likes" : , "quantity" : }
{ "_id" : ObjectId("5b1e1bfb33091e826f7c2c77"), "title" : "MongoDb Higher", "description" : "Mongodb is not sql database", "author" : "huangFeiHong", "url" : "http://www.huangfeihong.com", "tags" : [ "mongodb", "database", "NoSql" ], "likes" : , "quantity" : }
{ "_id" : ObjectId("5b1e1bfb33091e826f7c2c78"), "title" : "NoSql Redis Overview", "description" : "No sql database is very fast", "author" : "linChong", "url" : "http://www.linchong.com", "tags" : [ "redis", "database", "NoSql" ], "likes" : , "quantity" : }
{ "_id" : ObjectId("5b1e1bfb33091e826f7c2c79"), "title" : "Memcached Overrivew", "description" : "Memcached is sql database", "author" : "wuSong", "url" : "http://www.wusong.com", "tags" : [ "memcached", "cache", "NoSQL" ], "likes" : , "quantity" : }
>
>
> db.geoInstance.find()
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e03"), "loc" : [ , ] }
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e04"), "loc" : [ , ] }
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e05"), "loc" : [ , - ] }
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e06"), "loc" : [ -, ] }
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e07"), "loc" : { "x" : , "y" : } }
{ "_id" : ObjectId("5b1f4d21cf30d7cba03d5e08"), "loc" : { "lng" : -9.2, "lat" : 21.3 } }

          4】、我们可以使用nsInclude参数来恢复指定集合的数据。

            [root@linux bin]# ./mongorestore -h 192.168.127.130: --nsInclude school.users ./databaseBack/
--13T14::59.942+ preparing collections to restore from
--13T14::59.946+ reading metadata for school.users from databaseBack/school/users.metadata.json
--13T14::59.970+ restoring school.users from databaseBack/school/users.bson
--13T14::59.977+ no indexes to restore
--13T14::59.977+ finished restoring school.users ( documents)
--13T14::59.977+ done //这是在有数据的情况下执行恢复
[root@linux bin]# ./mongorestore -h 192.168.127.130: --nsInclude school.users ./databaseBack/
--13T14::10.743+ preparing collections to restore from
--13T14::10.747+ reading metadata for school.users from databaseBack/school/users.metadata.json
--13T14::10.748+ restoring school.users from databaseBack/school/users.bson
--13T14::10.755+ error: multiple errors in bulk operation:
- E11000 duplicate key error collection: school.users index: _id_ dup key: { : ObjectId('5b1e044733091e826f7c2c74') }
- E11000 duplicate key error collection: school.users index: _id_ dup key: { : ObjectId('5b1e044733091e826f7c2c75') }
- E11000 duplicate key error collection: school.users index: _id_ dup key: { : ObjectId('5b1e044733091e826f7c2c76') }
- E11000 duplicate key error collection: school.users index: _id_ dup key: { : ObjectId('5b1e1bfb33091e826f7c2c77') }
- E11000 duplicate key error collection: school.users index: _id_ dup key: { : ObjectId('5b1e1bfb33091e826f7c2c78') }
- E11000 duplicate key error collection: school.users index: _id_ dup key: { : ObjectId('5b1e1bfb33091e826f7c2c79') } --13T14::10.755+ no indexes to restore
--13T14::10.755+ finished restoring school.users ( documents)
--13T14::10.755+ done

          5】、我们可以使用zip压缩文件,通过archive参数来恢复指定数据库的数据。

            [root@linux bin]# ./mongorestore -h 192.168.127.130: --gzip --db school  --archive=./backZip/school..gz
--13T14::48.939+ the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
--13T14::49.591+ preparing collections to restore from
--13T14::50.041+ reading metadata for school.geoInstance from archive './backZip/school.2018613.gz'
--13T14::50.071+ restoring school.geoInstance from archive './backZip/school.2018613.gz'
--13T14::51.132+ restoring indexes for collection school.geoInstance from metadata
--13T14::51.150+ finished restoring school.geoInstance ( documents)
--13T14::51.152+ reading metadata for school.users from archive './backZip/school.2018613.gz'
--13T14::51.181+ restoring school.users from archive './backZip/school.2018613.gz'
--13T14::51.837+ no indexes to restore
--13T14::51.838+ finished restoring school.users ( documents)
--13T14::51.838+ done //以前已经删除了school数据库
[root@linux bin]# ./mongo --host 192.168.127.130 --port=
MongoDB shell version v3.6.3
connecting to: mongodb://192.168.127.130:27017/
MongoDB server version: 3.6.
Server has startup warnings:
--13T11::09.721+ I CONTROL [initandlisten]
--13T11::09.721+ I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
--13T11::09.721+ I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
--13T11::09.721+ I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
--13T11::09.721+ I CONTROL [initandlisten]
--13T11::09.723+ I CONTROL [initandlisten]
--13T11::09.723+ I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
--13T11::09.723+ I CONTROL [initandlisten] ** We suggest setting it to 'never'
--13T11::09.723+ I CONTROL [initandlisten]
> show dbs
admin .000GB
config .000GB
local .000GB
school .000GB //数据库已经存在了,说明恢复成功

五、结束

  好了,就是这些了。MongoDB的备份和还原还是有很多内容的,mongodump和mongorestore命令有很多参数可以去配置,今天只是一个初步认知,如果大家想查看更详细的内容,可以查看英文的网站。地址如下:https://docs.mongodb.com/manual/reference/program/mongodump/。不忘初心,继续努力吧。

MongoDb进阶实践之九 Mongodb的备份与还原的更多相关文章

  1. MongoDb进阶实践之六 MongoDB查询命令详述(补充)

    一.引言         上一篇文章我们已经介绍了MongoDB数据库的查询操作,但是并没有介绍全,随着自己的学习的深入,对查询又有了新的东西,决定补充进来.如果大家想看上一篇有关MongoDB查询的 ...

  2. Redis进阶实践之九 独立封装的RedisClient客户端工具类(转载9)

    Redis进阶实践之九 独立封装的RedisClient客户端工具类 一.引言 今天开始有关Redis学习的第九篇文章了,以后肯定会大量系统使用Redis作为缓存介质,为了更好的更好的Redis,自己 ...

  3. MongoDb进阶实践之一 如何在Linux(CentOS 7)上安装MongoDB

    一.NoSQL数据简介         1.NoSQL概念                   NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",是 ...

  4. MongoDb进阶实践之二 如何在Windows上配置MongoDB

    一.引言            上一篇文章,我介绍了如何在Linux系统上安装和配置MongoDB,其实都不是很难,不需要安装和编译,省去了Make && Make Install 命 ...

  5. MongoDb进阶实践之三 Mongodb基本命令详解

    一.引言              从今天开始,我要正式开始介绍MongoDB的使用方法了.在此之前,我用了两篇文章分别介绍了如何在Linux系统和Windows系统上安装和配置MongoDB系统.如 ...

  6. MongoDb进阶实践之一 如何在Linux系统上安装和配置MongoDB

    转载来源:https://www.cnblogs.com/PatrickLiu/p/8630151.html 一.NoSQL数据简介 1.NoSQL概念 NoSQL(NoSQL = Not Only ...

  7. MongoDb进阶实践之八 MongoDB的聚合初探

    一.引言 好久没有写东西了,MongoDB系列的文章也丢下好长时间了.今天终于有时间了,就写了一篇有关聚合的文章.一说到“聚合”,用过关系型数据库的人都应该知道它是一个什么东西.关系型数据库有“聚合” ...

  8. MongoDb进阶实践之三 MongoDB查询命令详述

    一.引言           上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命 ...

  9. MongoDb进阶实践之五 MongoDB修改命令详述

    一.引言         上一篇文章我们已经详细介绍了MongoDB数据库的有关查询的内容,但是这只是所有查询命令的冰山一角.所有查询命令都写完也没有必要,我只是写了一些常用的命令,对MongoDB的 ...

随机推荐

  1. ANg-别人家的笔记

    http://blog.csdn.net/scruelt/article/details/78997697 https://github.com/fengdu78/Coursera-ML-Andrew ...

  2. java.io.Closeable 接口

    package java.io; import java.io.IOException; /** * 关闭数据资源*/public interface Closeable extends AutoCl ...

  3. List of numerical libraries,Top Numerical Libraries For C#

    Top Numerical Libraries For C# AlgLib (http://alglib.net) ALGLIB is a numerical analysis and data pr ...

  4. SQL Server 生成 数据字典 / 数据库文档

    1. 工具生成 2.SQL语句生成 参考地址:http://blog.csdn.net/qq289523052/article/details/22174721 1.在 表 上右键 - 扩展属性 - ...

  5. 吴裕雄 python 机器学习-DMT(2)

    import matplotlib.pyplot as plt decisionNode = dict(boxstyle="sawtooth", fc="0.8" ...

  6. @Component单例与并发(未解决)

    今天用websocket记录连接的个数: 模拟少量请求到服务器端的websocket,@Component默认是单例的,让其注解到MyWebSocket类上: 每次请求过来都是相同的MyWebSock ...

  7. Numpy知识(二)

    ndarray的简单数学计算就和普通的a+b,a-b,a*b,a/b等类似. 关于ndarray的切片: arr[n]:寻找第n个元素(针对一维)arr[n:m]:从下标为n元素开始,截取到下标为m- ...

  8. React开发调试工具--react-developer-tools

    1. 首先,下载react-developer-tools开发调试工具插件. 因为谷歌插件下载需要FQ,这里提供一个本地资源:https://www.crx4chrome.com/crx/3068/ ...

  9. python 规范

    摘自google. https://i.cnblogs.com/PostDone.aspx?postid=9753605&actiontip=%E4%BF%9D%E5%AD%98%E4%BF% ...

  10. beebase

    1.简单介绍 BeeBase是一个在线生物信息学数据库,显示与Apis mellifera.欧洲蜜蜂以及一些病原体和其他物种有关的数据.它是与蜜蜂基因组测序联盟合作开发的.BeeBase是蜜蜂研究社区 ...