如何从CLI创建和删除MongoDB中的数据库

时间:2020-03-05 15:24:45  来源:igfitidea点击:

MongoDB是一个开源文档数据库和领先的NoSQL数据库。
它是一个跨平台,面向文档的数据库,提供高性能,高可用性和简单的可扩展性。
它是用C++写的。
它适用于收集和文件的概念。
我将简要解释这方面的三个组件。

数据库是集合的物理容器。
每个数据库都在文件系统上获取自己的一组文件。
单个MongoDB服务器包含多个数据库。

集合称为一组MongoDB文件。
它相当于RDBMS表。
我们可以在单个数据库中找到一个集合。
集合中的文档可以具有不同的字段。

文档是一组键值对。
它们具有动态架构,这意味着相同集合中的文档不需要具有相同的字段或者结构集。
此外,集合文件中的公共字段可以持有不同类型的数据。

在本教程中,我将解释如何从命令行创建和删除MongoDB上的数据库。

如何在MongoDB中创建数据库

在MongoDB中,"使用database_name"用于创建数据库。
如果它不存在,此命令将创建一个新数据库,否则,它将返回现有数据库。

语法:

use Database_name

例子:

> use mytestdb
switched to db mytestdb

这将创建一个名为"mytestdb"的数据库,如果它不存在并在创建后切换到该DB。
如果已经存在,它将使用此命令切换到该现有数据库。

要检查当前工作数据库,请使用命令db。

> use mytestdb
switched to db mytestdb
> db
mytestdb

如何在MongoDB中查看数据库

要检查数据库列表,请使用命令显示DBS。

show dbs
local 0.000GB

此处未列出我们创建的DB。
我们需要将至少一个文档插入其中,以便在列表中显示该数据库。

> db.movie.insert({"name":"tutorials point"})
WriteResult({ "nInserted" : 1 })
> show dbs
local 0.000GB
mytestdb 0.000GB
sahedb 0.000GB

在MongoDB默认数据库中是"test"。
如果我们没有创建任何数据库,则集合将存储在测试数据库中。

如何更改为MongoDB中的数据库

在不明确指定数据库的情况下执行的任何操作将在当前数据库上执行。
Inorder要选择所需的数据库,我们需要使用"使用"命令切换到该数据库。
要查看当前数据库,我们可以使用命令"db"。
例如,我在数据库上"mytestdb"目前,我需要为我的目的使用其他数据库"sahedb"。
这是我如何验证当前状态并切换到所需的状态。

> db
mytestdb
> use sahedb
switched to db sahedb
> db
sahedb

如何在MongoDB中删除数据库

mongodb使用db.dropdatabase()命令删除现有数据库。

语法

dropdatabase()命令的基本语法如下

db.dropDatabase()

这将删除所选数据库。
如果我们没有选择任何数据库,那么它将删除默认的"测试"数据库。
在此示例中,我展示了我如何删除我的数据库"sahedb"。

> db
sahedb
> db.dropDatabase()
{ "dropped" : "sahedb", "ok" : 1 }

我们可以通过列出当前数据库来确认数据库删除。

show dbs
local 0.000GB
mytestdb 0.000GB

如何在MongoDB创建集合

在MongoDB DB.CreateCollection(姓名,选项)中用于创建集合。

语法

CreateCollection()命令的基本语法如下 -

db.createCollection(name, options)

在命令中,名称是要创建的集合的名称。
选项是一个文档,用于指定存储器大小和索引等集合的配置。

use mytestdb
switched to db mytestdb
> db.createCollection("media")
{ "ok" : 1 }

我们可以使用命令显示集合检查数据库中的创建集合。

show collections
movie
media

我们甚至可以使用以下选项创建集合,如下所示:

db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )
{ "ok" : 1 }

我突出显示此集合创建中使用的选项。

主要是,我们不需要创建一个集合。
使用简单的插入命令,我们可以自动创建集合。

db.theitroad.comsert({"name" : "linux"})
WriteResult({ "nInserted" : 1 })
> show collections
theitroad
movie
mycol

如何将数据插入MongoDB集合

我们可以使用MongoDB的Insert()或者Save()方法将数据插入MongoDB集合中。

语法

插入()命令的基本语法如下 -

db.COLLECTION_NAME.insert(document)

其中我在"sahedb"内部将一些数据插入我的收藏"devops"。

use sahedb
switched to db sahedb
> db.devops.insert({"name" : "SAM", "age" : "25", "Designation" : "Admin"})
WriteResult({ "nInserted" : 1 })

如何在MongoDB中删除集合

在MongoDB,DB.Collection.Drop()用于从数据库中删除集合。
我们需要在数据库中运行此命令。

语法

drop()命令的基本语法如下

db.COLLECTION_NAME.drop()
>db.media.drop()
true

如果我们尝试删除一个不存在的表,那么它将返回"假"而不是"true"。
换句话说,如果已成功删除所选的集合,则删除()方法将返回true,否则会返回false。

如何在MongoDB拍摄

我们可以使用命令"mongodump"来备份MongoDB数据库。
通过运行此命令,我们可以备份整个MongoDB数据库并将其存储在所需的路径中。

$# mongodump --out /home/FullDBbackups
2015-12-13T06:16:00.665+0000 writing mytestdb.theitroad to
2015-12-13T06:16:00.667+0000 writing mytestdb.movie to
2015-12-13T06:16:00.668+0000 writing mytestdb.mycollection to
2015-12-13T06:16:00.671+0000 writing mytestdb.mycol to
2015-12-13T06:16:00.671+0000 done dumping mytestdb.theitroad (1 document)
2015-12-13T06:16:00.674+0000 done dumping mytestdb.movie (1 document)
2015-12-13T06:16:00.676+0000 done dumping mytestdb.mycollection (0 documents)
2015-12-13T06:16:00.676+0000 done dumping mytestdb.mycol (0 documents)
2015-12-13T06:16:00.677+0000 writing sahedb.devops to
2015-12-13T06:16:00.678+0000 done dumping sahedb.devops (0 documents)
root@mongodb:/home/FullDBbackups# ll
total 16
drwxr-xr-x 4 root root 4096 Dec 13 06:16 ./
drwxr-xr-x 5 root root 4096 Dec 13 06:15 ../
drwxr-xr-x 2 root root 4096 Dec 13 06:16 mytestdb/
drwxr-xr-x 2 root root 4096 Dec 13 06:16 sahedb/

只需在没有任何备份目录路径的情况下运行此命令,那么默认情况下它将创建备份"/root/dump"。

如果我们要在MongoDB中备份一个单个数据库,我们需要指定具有选项"-d"或者--db =(dbname)的特定数据库。

语法

mongodump --db=<dbname> --out BACKUP_DIRECTORY
$mongodump -d sahedb --out /home/
2015-12-13T06:14:58.650+0000 writing sahedb.devops to
2015-12-13T06:14:58.651+0000 done dumping sahedb.devops (0 documents)
root@mongodb:/home/sahedb# ls
devops.bson devops.metadata.json

接下来,我们可以检查如何在MongoDB数据库中备份特定集合。
例如,我需要在"mytestdb"数据库中备份收集电影。
让我们看看如何实现这一目标。

语法

mongodump --collection collection --db db_name root @:/home/collectionbackupmongodump --collection movie -d mytestdb $ls -r转储/转储/:mytestdb dump/mytestdb:movie.bson movie.metadata.json

我们需要从我们需要备份的文件夹中运行此命令。

如何在MongoDB中还原数据库

我们可以使用Mongorestore命令恢复MongoDB中的备份数据。
此命令从默认情况下从默认备份目录中恢复所有数据/默认情况下。

$# mongorestore
2015-12-13T06:51:23.327+0000 using default 'dump' directory
2015-12-13T06:51:23.328+0000 building a list of dbs and collections to restore from dump dir
2015-12-13T06:51:23.333+0000 reading metadata for mytestdb.movie from dump/mytestdb/movie.metadata.json
2015-12-13T06:51:23.335+0000 restoring mytestdb.movie from dump/mytestdb/movie.bson
2015-12-13T06:51:23.351+0000 error: E11000 duplicate key error collection: mytestdb.movie index: _id_ dup key: { : ObjectId('584e363461eab97f1e215383') }
2015-12-13T06:51:23.351+0000 restoring indexes for collection mytestdb.movie from metadata
2015-12-13T06:51:23.353+0000 finished restoring mytestdb.movie (1 document)
2015-12-13T06:51:23.354+0000 done

如果我们需要从备份中还原单个数据库,则可以使用以下选项:

语法

$mongorestore -d <dbname to restore> <DBBackup path>

例如,我需要从/home/sahedb的数据库所采取的备份恢复DB"SahEDB"。
这是我如何实现的。

$# mongorestore -d sahedb /home/sahedb
2015-12-13T06:58:50.205+0000 building a list of collections to restore from /home/sahedb dir
2015-12-13T06:58:50.207+0000 reading metadata for sahedb.devops from /home/sahedb/devops.metadata.json
2015-12-13T06:58:50.207+0000 restoring sahedb.devops from /home/sahedb/devops.bson
2015-12-13T06:58:50.210+0000 restoring indexes for collection sahedb.devops from metadata
2015-12-13T06:58:50.211+0000 finished restoring sahedb.devops (0 documents)
2015-12-13T06:58:50.211+0000 done

要从MongoDB中的数据库还原单个集合,我们可以使用以下命令:

语法

mongorestore -c <collection name> -d <databasename> <.bson file path for that collection>

例子:

$mongorestore -c movie -d mytestdb /home/Collectionbackup/dump/mytestdb/movie.bson
2015-12-13T07:08:58.098+0000 checking for collection data in /home/Collectionbackup/dump/mytestdb/movie.bson
2015-12-13T07:08:58.101+0000 reading metadata for mytestdb.movie from /home/Collectionbackup/dump/mytestdb/movie.metadata.json
2015-12-13T07:08:58.102+0000 restoring mytestdb.movie from /home/Collectionbackup/dump/mytestdb/movie.bson
2015-12-13T07:08:58.167+0000 restoring indexes for collection mytestdb.movie from metadata
2015-12-13T07:08:58.168+0000 finished restoring mytestdb.movie (1 document)
2015-12-13T07:08:58.168+0000 done