MongoDB初遇
博客专区 > trayvon 的博客 > 博客详情
MongoDB初遇
trayvon 发表于2年前
MongoDB初遇
  • 发表于 2年前
  • 阅读 119
  • 收藏 7
  • 点赞 1
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 从了解MongoDB到现在也有一段时间了,从新回顾MongoDB的一下基本操作,对于一些原来比较容易混淆的概念也更加清晰一些,记录了一些MongoDB的基本操作和一些易错的地方,希望对于MongoDB的爱好者少走一些弯路。强烈建议阅读MongoDB的官方文档,因为MongoDB的版本变动较大。

一、MongoDB服务的启动

       Mongodb的安装还是比较容易的,从MongoDB下载MongoDB,Windows下基本上按照提示一步一步的执行就可以了,Linux下只需解压就可以了。安装完毕后为了避免每一次都加上绝对路径,配置一下环境变量,把mongodbbin目录加入到path中。

接下来启动mongodb服务,如果配置了环境变量最简单的启动mongodb服务就是:

mongod --dbpath e:\data\db

   注意:dbpath表示就是数据存放的目录,只有是存在的目录就可以了。如果是Windows32位系统MongoDB是没有默认的存储引擎的,必须要通过启动参数指定存储引擎如:

mongod --storageEngine=mmavp1 –dbpath e:\data\db

只需要在第一次指定dbpath的时候加上存储引擎参数就可以了,只要不改变dbpath的目录,以后就不用加存储引擎参数了。

1:启动mongodb服务

   启动mongodb服务除了指定dbpath参数之外还有几个比较常用的就是—auth,表示使用数据库需要验证,--logpath表示日志文件的位置。--logappend表示添加日志的方式。例如:

mongod --auth --logpath "e:\logs\log.log" --logappend --dbpath "e:\data\ \db"

如果绝对每一次启动mongodb输入这么多参数麻烦,Windows下可以通过下面的命令安装mongodb服务。

mongod --auth --logpath "e:\logs\log.log" --logappend --dbpath "e:\data\ \db" –install

因为默认的服务名就是mongodb,所以安装完成之后就可以通过

net start mongodb 来启动服务
net stop mongodb 来关闭服务

   注意指定的日志文件目录和数据文件目录一定要存在,否则会出错。如果要修改可以把install选项换成reinstall,如:

mongod --auth --logpath "e:\logs\log.log" --logappend --dbpath "e:\data\ \db" –reinstall

   如果你安装服务之后发现你每一次启动都想指定不同的启动参数,那么可以使用

sc delete mongodb  来删除服务。

   如果只是本机使用,建议启动参数不用键- -auth选项,特别是不熟悉mongodb的情况下,因为mongodb的权限管理相关的知识还是比较多的。

二、MongoDB的基本命令


   启动好了mongodb服务,就可以通过mongodb提供的客户端连接到mongodb数据库了,启动一个命令窗口,输入mongo命令:连接到mongodb数据服务器默认使用的是test数据库

图2:连接mongodb服务

查看所有的数据库
show dbs
查看当前使用的数据库
db
切换数据库和MySQL一样使用关键字use,下面命令是切换到test数据库
use test
创建数据库也是使用use
只有在数据库中创建了集合,才会查看到服务器中有对应的数据库
创建集合
db.createCollection(“collection_name”)
删除集合
db.collection_name.drop()
db.dropDatabase()
mongodb中没有表的慨念,与之相对应的是集合collection,查看所有的集合
show collections
查看有那些用户:(admin数据库才可以)
db.system.users.find().pretty()
这条语句就是查询admin数据库下的system.users集合中的数据,pretty方法表示格式化输出的数据。

   默认情况下mongodb是没有用户的,如果是在—auth启动的mongodb会应许你创建一个用户,如果要创建更多的用户则需要响应的权限。

   所以如果我们用—auth启动mongodb服务,我们创建的第一个用户的角色一般是userAdminAnyDatabase 这个角色是mongodb内置的角色。这个内建角色最常用的就是它拥有查看数据库列表的权限,和对所有数据库的userAdmin这个内建角色的权限。如果一个用户在数据库上被赋予userAdmin这个角色,那么他在该数据库上就有以下的权限:

  changeCustomData
  changePassword
  createRole
  createUser
  dropRole
  dropUser
  grantRole
  revokeRole
  viewRole
  viewUser

   这里我们不在深入的探讨用户(usesr),角色(role),权限(action)的话题,对于最基本的操作我们需要注意的是用户是建立在数据库上的,所以当我们只需授权操作时候要在use到对应的数据库上db.auth(“username”,”password”)。也可以自定义角色,指定角色有哪些权限(action)

下面是在admin数据库上创建一个admin用户,并且为他赋予了userAdminAnyDatabase角色和创建成功的返回结果。

db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
Successfully added user: {
        "user" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}

三、MongoDB的数据备份与还原

首先是mongodump命令,还是只使用基本的参数

mongodump –d database_name –o outdir

把数据库名为database_name的数据库导出到outdir目录

mongodump命令导出的数据恢复:

mongorestore –d database_name outdir

outdir目录的导入到数据库名为database_name 的数据库

mongoexport –d database_name –c collection_name –o outfile_name

把数据库名为database_name 集合名为collection_name导出为outfile_name

mongoimport –d database_name –c collection_name infile_name

把文件infile_name文件的数据导入到数据库名为database_name,集合名为collection_name的集合。

   相比于 mongodbimport命令,mongorestore命令可以实现批量的导入,恢复重mongodump导出的整个数据库的时候,使用mongoresotre直接一步到位,非常方便。

   上面的4个命令默认的连接的数据库都是localhost,端口是27017mongodb服务。所以一定要启动本地的mongodb服务。当然你也可以通过—host hostname:port的方式来指定要连接的主机和端口。值得注意的是上面的是个命令都是单独的工具,所以直接在命令行执行就可以了,不要在mongo中执行。

四、参考链接

下面的链接是mongodb官方文档关于mongodb基本操作(增删改查)

https://docs.mongodb.org/manual/core/crud-introduction/

Mongodb的官方文档中有一些内容不好找,下面就是一个mongodb shell常用的文档链接,其中就包含了用户和角色管理

https://docs.mongodb.org/manual/reference/method/

如果你没有安装成功,这里有一篇不错的关于怎样安装mongodb的文章:

https://segmentfault.com/a/1190000002744306

mongodb的数据备份与恢复:

https://docs.mongodb.org/manual/reference/program/mongodump/

https://docs.mongodb.org/manual/reference/program/mongorestore/

https://docs.mongodb.org/manual/reference/program/mongoexport/

共有 人打赏支持
粉丝 12
博文 92
码字总数 140872
作品 1
×
trayvon
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: