MongoDB 安装 增删改查

MongoDB
 
一 介绍
1.高性能的数据存储解决方案是大多数大型Web应用程序和服务的核心。后端数据库负责存储一切东西,从用户账户的信息到购物车中的商品,以及博客和评论数据等。好的Web应用需要能够精确、高速和可靠的存储和检索数据。有多种不同的数据存储解决方案都可以用于存储和检索Web应用程序所需的数据。三种最常见的方案是:在文件系统的文件中直接存储、关系型数据库和NoSQL数据库。而MongoDB就是NoSQL数据库。
2.NoSQL
NoSQL(Not Only SQL),由提供缺乏传统SQL关系数据库的严格限制模型的存储和检索技术组成。NoSQL背后的主要动机是简化设计、水平扩展,以及对数据的可用性进行更精细的控制。NoSQL数据库的实现方式可能永远无法用传统的关系数据库来构造。MongoDB是目前能够得到的最流行并拥有最好的支持的NoSQL数据库。MongoDB和文档模型,在为Web应用程序和服务实现后端存储方面具有极大的灵活性和可扩展性。
3.MongoDB
MongoDB基于的文档模型把数据对象作为一个集合中单独的文档来存储。MongoDB通过使用集合将数据分组在一起。集合仅仅是一组具有相同或类似用途的文档,集合的行为很像传统的SQL数据库中的表,但是两者又有很大的不同,在MongoDB中,集合不执行严格的模式。
(1)文档
文档是MongoDB数据库中单个数据实体的表示。集合由一个或多个相关的对象组成。MongoDB和SQL之间的主要区别是MongoDB文档和SQL的行存在很大的不同。行数据是非常平坦的,意味着行中的每一个值都有一个列。而在MongoDB中,文档可以包含嵌入的子文档,从而为应用程序提供更密切的内在数据模型。
在MongoDB中,代表文档的记录被存储为BSON,这是JSON的一个轻量级的二进制形式。MongoDB的字段/值对应于JavaScript的属性/值对。这就意味着,要把MongoDB的记录转换回你的nodejs应用程序中使用的JS对象,几乎没有必要进行翻译。
{
    name:'new project',
    version:1,
    language:['javascript','html','css'],
    path:{temp:'/tmp',project:'opt/project'}
}
(2)数据类型
BSON数据格式在以二进制形式存储Javascript对象时,提供了几种不同的类型使用,这些类型尽可能与javascript的类型相匹配。了解这些类型很重要,因为你可以真正的查询MongoDB,来发现具有某一类型的值的特定属性的对象。
Double    String      Object       Array 
Binary data         Object id       Boolean  Date
Null     Regular Expression      JavaScript     Symbol
32-bit integer      64-bit integer       Timestamp        Min Key         Max Key
 
二 安装
1.到官网上下载MongoDB的最新版本
2.将mongodb文件路径下的bin添加到系统路径中
3.新建目录,如d:\data\db作为自己的数据库
4.在控制台下使用以下命令启动MongoDB
mongod --dbpath d:\data\db     (将新建的路径作为默认的数据库路径)

打开bin目录下的mongo.exe,注意。一旦进入了MongoDB shell后,就可以管理MongoDB的各个方面,shell有很多命令

每条指令的意思是:
使用和创建数据库:use mydb     (没有就创建)
显示数据库: show dbs
显示数据库状态:  db.stats()
检查当前所用的数据库: db
关闭数据库引擎: 
use mydb 
db.shutdownServer()
删除数据库:
use mydb
db.dropDatabase()
 
三 管理用户账户
1.列出用户账户
用户账户存储在每个数据库的db.system.users集合中,User对象包括_id,user,pwd,roles字段,有几个不同的方法来获取User对象的列表
(1)列出admin数据库的用户
use admin 
show users
(2)计算admin数据库的用户的数量
在db.system.users集合上使用查询,如find
use admin
cur=db.system.users.find()
cur.count()

2.创建用户账户
一旦创建了一个用户管理员,就可以使用该账户创建可管理、读取和写入数据库的其他用户账户。使用createUser()方法添加用户账户。该方法接受一个document对象,允许你指定适用于该用户的用户名、角色和密码。其中,可以在此document对象中指定的字段是:
字段                   格式                         说明
user                  string                 指定一个唯一的用户名
roles                 array                  指定用户角色的数组
pwd                 hashorstring       指定用户的密码
userSource        <database>      代替pwd字段,指向具有相同的用户定义的另一个数据库
otherDBRoles       {<database>:[array],<database>:[array]}        允许你指定这个用户在其他数据库中拥有的角色,格式是一个文档,数据库名称作为键,包括那个数据库适用于该用户的角色的数组
MongoDB中提供了大量的角色,你可以将它们分配给一个用户账户。
角色                         说明
read                         允许用户从数据库的任何集合中读取数据
readAnyDatabase     同read,但针对所有的数据库
readWrite                 提供read的所有功能,并允许用户写数据库中的任何集合
readWriteAnyDatabase      同readWrite,但针对所有的数据库
dbAdmin                  允许用户读取和写入数据库,以及清理、修改、压缩、得到统计概要,并进行验证
dbAdminAnyDatabase       同dbAdmin,但针对所有数据库
clusterAdmin            允许用户对MongoDB执行一般的管理,包括连接、集群、复制、列出数据库、创建数据库和删除数据库
userAdmin                允许用户创建和修改数据库的用户长湖
userAdminAnyDatabase     同userAdmin,但针对所有的数据库

此时查看用户情况:

 
3.删除用户
使用dropUser(username)方法删除用户,首先需要先切换到该用户所在的数据库。

 

四 配置访问控制

1.设置新的MongoDB实例的第一步就是创建用户管理员和数据库管理员账户。用户管理员具有在admin和其他数据库中创建用户账户的功能。此外,还需要创建一个可以当做超级用户使用的数据库管理员账户,用它来管理数据库、集群、复制和MongoDB的其他方面。
2.用户管理员账户
(1)创建用户管理员账户
用户管理员应该只有创建用户的权限,而没有管理数据库或其他管理功能,这使数据库管理和用户账户管理完全分离。
如:创建一个用户管理员账户,以userAdminAnyDatabase作为唯一的角色
use admin
db.createUser({user:'userAdmin',pwd:'test',roles:['userAdminAnyDatabase']})
(2)打开身份验证
一旦用户管理员账户已经创建,就需要使用--auth参数重新启动数据库
mongod --dbpath d:\data\db --auth

客户端必须使用一个用户名和密码来访问数据库。
use admin
db.auth('userAdmin','test')

也可以使用另一种方法来验证,在启动MongoDB的shell时使用--username和--password选项,并指定admin数据库
mongo admin --username 'userAdmin' --password 'test'

 3.数据库管理员账户

数据库管理员是一个具有readWriteAnyDatabase,dbAdminAnyDatabase和clusterAdmin权限的用户,这为该用户提供了访问系统中的所有数据库、创建新的数据库,并管理MongoDB的集群和副本的能力。如:
use admin
db.createUser({user:'dbAdmin',pwd:'test',roles:['readWriteAnyDatabase','dbAdminAnyDatabase','clusterAdmin']})

验证方法同上

 
五 数据库的管理
1.显示数据库清单
show dbs
2.切换当前数据库
两种方法:
db.getSiblingDB('testDB')
use testDB
3.创建数据库
MongoDB并没有显示创建数据库的一个命令,通过use database即可。但是注意,除非是把集合添加到新的数据库,否则这个数据库不会被保存。   

如图,虽然切换到mydb中了,但是show dbs可以发现并没有该DB。

 
在mydb中添加了集合之后,此时show dbs就可以看到mydb这个数据库了。
4.删除数据库
db.dropDatabase()

5.复制数据库
db.copyDatabase(origin,destination)
其中,origin是一个字符串,指定了要复制的数据库的名称,destination指定了要创建的数据库的名称。
 
六 管理集合
1.创建集合
db.createCollection(name,[options])
可选的options是一个对象,该对象有如下属性:
capped:一个布尔值,true表示该集合是一个封顶集合,它不会增长到比size属性指定的最大规模更大,默认为false
autoIndexID:一个布尔值,如果为true则自动为添加到集合的每个文档创建一个_id字段并实现该字段上的索引,封顶集合应该为false,默认为true
size:以字节为单位的大小,用于封顶集合
max:在封顶集合中允许的最大文档数
2.显示数据库中的集合列表
show collections

3.删除集合
删除旧的集合会释放磁盘空间,并消除任何与集合关联的开销,如索引。
4.将文档添加到集合中
通常情况下,我们都是通过node.js应用程序网集合中插入文档,不过有时候也需要从管理的角度手动插入文档来预先加载数据局、修复数据库,或用于测试目的。
将文档添加到一个集合,需要先得到collection对象,然后在该对象上调用insert(document)或save(document)方法,其中,document是被转换成BSON并存储在集合中的格式正确的JavaScript对象。
5.在集合中查找文档
大多数情况下,你可以使用一个库,如本地的MongoDB驱动程序或Mongoose访问文档的集合。有时也需要在MongoDB的shell中查看文档。
可以使用collection对象上的find(query)方法,可选的query指定包含字段和值的查询文档和集合中的文档匹配。

6.删除文档
先得到collection对象,然后调用该对象的remove(query)方法
7.更新文档
首先要先得到该集合,然后使用save(object)或者update(query,update,options)方法来查找集合中的文档,然后在它们被找到时更新它们。
使用update()方法时,query参数指定了字段和值与集合中的文档匹配的一个查询文档,update参数是一个对象,指定在作出更新时使用的更新运算符,如$inc为递增该字段的值,$set设置字段的值,$push将一个条目推送到数组等。options是一个对象,有两个属性:multi和upsert,都是布尔值,multi为true表示与查询匹配的所有文档都被更新,否则,值更新第一个文档个;upsert为true表示如果没有找到就创建一个新的文档。
 
 
 
 
 
 

转载于:https://www.cnblogs.com/lyy-2016/p/6789776.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值