MogoDB的定义以及相关的使用方法

MogoDB的定义以及使用

一、关系型数据库

  • 关系型数据库遵循ACID规则
  • 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:

1.A (Atomicity) 原子性

(1)原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
(2)比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。

2.C (Consistency) 一致性

(1)一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
(2)例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。

3.I (Isolation) 独立性

(1)所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
(2)比如现在有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。

4.D (Durability) 持久性

(1)持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

二、分布式系统

1.分布式系统具有高度的内聚性和透明性。
2.分布式计算的优点:
(1)可靠性(容错) :

扫描二维码关注公众号,回复: 10183625 查看本文章
  • 分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。

(2)可扩展性:

  • 在分布式计算系统可以根据需要增加更多的机器。

(3)资源共享:

  • 共享数据是必不可少的应用,如银行,预订系统。

(4)灵活性:

  • 由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。

(5)更快的速度:

  • 分布式计算系统可以有多台计算机的计算能力,使得它比其他系统有更快的处理速度。

(6)开放系统:

  • 由于它是开放的系统,本地或者远程都可以访问到该服务。

(7)更高的性能:

  • 相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。

3.分布式计算的缺点:

(1)故障排除:

  • 故障排除和诊断问题。

(2)软件:

  • 更少的软件支持是分布式计算系统的主要缺点。

(3)网络:

  • 网络基础设施的问题,包括:传输问题,高负载,信息丢失等。

(4)安全性:

  • 开放系统的特性让分布式计算系统存在着数据的安全性和共享的风险等问题。

三、什么是MongoDB ?

  • MongoDB 是由C++语言编写,是一个基于分布式文件存储的开源数据库系统。
  • MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
  • MongoDB 默认数据库为 test,如果没创建数据库,集合存放在test 数据库中。
  • 在高负载的情况下,添加更多的节点,可以保证服务器性能。
  • MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
  • MongoDB 文档类似 JSON 对象。字段值可以包含其他文档,数组及文档数组。
  • 文档的数据结构和 JSON 基本一样,所有存储在集合中的数据都是 BSON 格式。BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

四、“show dbs” 命令可以显示所有数据的列表。

五、执行 “db” 命令可以显示当前数据库对象或集合。

六、运行"use"命令,可以连接到一个指定的数据库。例如:use local

七、MongoDB与关系型数据库的区别

  • 文档是一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

八、MongoDB的注意事项

  • 文档中的键/值对是有序的。
  • 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
  • MongoDB区分类型和大小写。
  • MongoDB的文档不能有重复的键。
  • 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
  • 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

九、文档键命名规范

  • 键不能含有\0 (空字符)。这个字符用来表示键的结尾。
  • 和$有特别的意义,只有在特定环境下才能使用。
  • 以下划线"_"开头的键是保留的(不是严格要求的)。

十、RDBMS

  • 关系数据库管理系统:Relational Database Management System

十一、合法的集合名(集合相当于关系型数据库中的表格)

  • 集合名不能是空字符串""。
  • 集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
  • 集合名不能以"system."开头,这是为系统集合保留的前缀。
  • 用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

十二、创建数据库

  • use DATABASE_NAME
  • 如果数据库不存在,则创建数据库,否则切换到指定数据库。

十三、插入数据

db.集合名.insert({
title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})

十四、删除数据库

  • db.dropDatabase()
  • 用use命令切换到要删除的数据库中之后再执行此命令

十五、删除集合

  • db.集合名.drop()
  • 用use命令切换到要删除的数据库中之后再执行此命令

十六、创建集合

  • db.createCollection(name, options)
  • db.createCollection(“mycol”, { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
    { “ok” : 1 }
  • name: 要创建的集合名称
  • options: 可选参数, 指定有关内存大小及索引的选项

十七、查看集合

  • show collections

十八、查看已插入文档(集合)

  • db.集合名.find()

十九、删除文档

  • db.col.remove({‘title’:‘MongoDB 教程’})
  • remove里面的是删除的条件

二十、查询文档

  • db.集合名.find().pretty()
  • pretty() 方法以格式化的方式来显示所有文档。
  • 除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。
  • db.col.find({“likes”:{$lt:50}}).pretty() 相当于 where likes < 50
  • db.col.find({“likes”:{$lte:50}}).pretty() 相当于 where likes <= 50
  • db.col.find({“likes”:{$gt:50}}).pretty() 相当于 where likes > 50
  • db.col.find({“likes”:{$gte:50}}).pretty() 相当于 where likes >= 50
  • db.col.find({“likes”:{$ne:50}}).pretty() 相当于 where likes != 50
  • db.col.find({likes : {$lt :200, $gt : 100}}) 相当于 likes>100 AND likes<200
  • db.col.find({$or:[{“by”:“菜鸟教程”},{“title”: “MongoDB”}]}).pretty() 相当于 or
  • db.col.find({“likes”: {$gt:50}, $or: [{“by”: “菜鸟教程”},{“title”: “MongoDB 教程”}]}).pretty()
  • 相当于 where likes>50 AND (by = ‘菜鸟教程’ OR title = ‘MongoDB 教程’)

二十一、如果想获取 “col” 集合中 title 为 String 的数据,你可以使用以下命令:

  • db.col.find({“title” : {$type : 2}})

  • db.col.find({“title” : {$type : ‘string’}})

二十二、读取指定数量的数据:limit()

  • db.COLLECTION_NAME.find().limit(数字)

二十三、跳过指定数量的数据:skip()

  • db.COLLECTION_NAME.find().limit(数字).skip(数字)
  • skip()方法默认参数为 0 。

二十四、 排序:sort()

  • db.col.find({},{“title”:1,_id:0}).sort({“likes”:-1})
  • 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

二十五、创建索引

  • db.collection.createIndex(keys, options)
  • keys 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
  • db.col.createIndex({“title”:1})
  • db.col.createIndex({“title”:1,“description”:-1})
  • 查看集合索引
    db.col.getIndexes()
  • 查看集合索引大小
    db.col.totalIndexSize()
  • 删除集合所有索引
    db.col.dropIndexes()
  • 删除集合指定索引
    db.col.dropIndex("索引名称")
发布了51 篇原创文章 · 获赞 11 · 访问量 6074

猜你喜欢

转载自blog.csdn.net/weixin_42140261/article/details/104900361
今日推荐