MongoDB-知识点

MongoDB

数据操作的“三高”需求有哪三个

• High performance - 对数据库高并发读写的需求。

• Huge Storage - 对海量数据的高效率存储和访问的需求。

• High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。

MongoDB的特点/使用环境
  1. 数据量大
  2. 写入操作频繁(读写都很频繁)
  3. 价值较低的数据,对事务性要求不高
  4. 应用不需要事务及复杂 join 支持
  5. 新应用,需求会变,数据模型无法确定,想快速迭代开发
  6. 应用需要2000-3000以上的读写QPS(更高也可以)
  7. 应用需要TB甚至 PB 级别数据存储
  8. 应用发展迅速,需要能快速水平扩展
  9. 应用要求存储的数据不丢失
  10. 应用需要99.999%高可用
  11. 应用需要大量的地理位置查询、文本查询

MongoDB相对于MySQL,可以以更低的成本解决问题

MongoDB的优点:
  1. 弱一致性(最终一致):

    更能保证用户的访问速度

  2. 文档结构的存储方式,能够更便捷的获取数据:

    对于一个层级式的数据结构来说,要将很多的数据使用扁平式的、表状的结构来保存数据的话,这不管是在查询还是获取数据时都会很困难)

  3. 第三方支持丰富:
    这也是MongoDB跟其它的NoSQL具有的相同优势,网络上的很多NoSQL开源数据库完全属于社区型的,没有官方支持,给使用者带来了很大的风险

  4. 性能优越:
    在使用场合下,千万级别的文档对象,近10G的数据,对有索引的ID的查询不会比mysql慢,而对非索引字段的查询,则是全面胜出。 mysql实际无法胜任大数据量下任意字段的查询,而mongodb的查询性能可以,同时它的写入性能也很厉害,可以写入百万级别的数据

MongoDB的缺点:
  1. MongoDB不支持事务操作
    所以事务要求严格的系统,比如银行系统就不能用它。

  2. MongoDB占用空间过大
    (1)空间的预分配:
    当MongoDB的空间不足时它就会申请生成一大块硬盘空间,而且申请的量都是有64M、128M、256M来增加直到2G为单个文件的较大体积,并且随着数量叠增,可以在数据目录下看到整块生成而且不断递增的文件。

    (2)删除记录不释放空间:
    这很容易理解,为避免记录删除后的数据的大规模挪动,原记录空间不删除,只标记“已删除”即可,以后还可以重复利用。

  3. (开发和IT运营要注意)MongoDB没有MySQL那样成熟的维护工具

MongoDB常用语句

连接Mongo数据库,并设置数据存储地址

mongod.exe --dbpath "d:\software\MongoDB\Server\3.0\data"

#--------------------------数据库--------------------------#

查看所有的数据库

show dbs

删除当前使用的数据库

db.dropDatabase()

使用这个数据库(只有插入数据后完成创建数据库)

use dbt

查看当前使用的数据库

db

db.getName()

查看当前数据库状态

db.stats()

修复当前数据库

db.repairDatabase()

从一个数据库复制到另一个数据库

db.copyDatabase("mydb", "temp", "127.0.0.1");

#--------------------------集合--------------------------#

查看当前数据库下所有的集合

show collections

show tables

创建名称为coll集合

db.createCollection('coll')

db.createCollection("coll2", {capped:true, autoIndexId:true, size:6142800, max:10000}) # 可选参数

查看当前集合状态

db.coll.stats()

删除名称为coll集合

db.coll.drop()

#--------------------------集合数据--------------------------#

插入空数据并且直接创建名称为coll集合

db.coll.insert({})

插入一个或多个数据

db.coll.insert({name:'tom', age:22})

db.coll.insert([{name:'adam', age:10},{name:'john', age:23}])

添加数据(save方法可以修改相同id的数据)

db.coll.save({name:'allen'})

删除一个或所有的数据

db.coll.remove({name:'tom'})

db.coll.remove({})

删除符合条件的数据中的第一条

db.coll.remove({name:'tom'}, 1)

更改数据

db.coll.update({name:'tom', age:22}, {$set:{name:'tom', age:222}})

查看数据

db.coll.find()

查看一条数据

db.coll.findOne()

db.coll.find({}, {name:1, '_id':0}) # 1表示显示,0表示不显示(find默认显示_id)

格式化显示数据,使数据更加清晰明了

db.coll.find().pretty()

使用and,or查看数据

db.coll.find({name:'tom', age:22}) # 等同and使用

db.coll.find({$or:[{name:'tom'}, {age:21}]}) # or使用

操作符大于,小于,等于,不等于,大于不等于,小于不等于

db.coll.find({age: {$gt: 22}}) # 大于

db.coll.find({age: {$lt: 22}}) # 大于

db.coll.find({age: 22}) # 等于

db.coll.find({age: {$ne: 22}}) # 不等于

db.coll.find({age: {$gte: 22}}) # 大于等于

db.coll.find({age: {$lte: 22}}) # 小于等于

显示从skip之后limit个

db.coll.find().limit(2).skip(1)

#--------------------------用户--------------------------#

3.x之后版本添加用户

use admin

db.createUser({user:'nu', pwd:'nu', roles:[{role:'readWrite',db:'admin'}]})

用户认证

db.auth("nu", "nu");

显示当前所有用户

show users;

db.system.users.find()

3.x版本删除用户

db.removeUser('nu') # 不推荐使用,已经废弃

db.dropUser("nu");

当前db版本

db.version();

当前db的链接机器地址和端口

db.getMongo();

备份到备份目录

mongodump

从备份目录恢复备份语句。

mongorestore
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值