mongoDB

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理。 1970年 E.F.Codd’s提出的关系模型的论文 “A relational model of data for large shared data banks”,这使得数据建模和应用程序编程更加简单。通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。
NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

- 分类

  • 键值 (Key-Value) 存储数据库

    Tokyo Cabinet/Tyrant、 Redis、 Voldemort 和 OracleBDB。

  • 列存储数据库

    Cassandra、HBase 和 Riak。

  • 文档型数据库

    mongodb
    CouchDB

  • 图形 (Graph) 数据库

    Neo4J、 Infogrid 和 InfiniteGraph。

- 优势

高可扩展性、分布式计算、没有复杂的关系、低成本、架构灵活、半结构化数据

mongodb

mongodb中:MongoDB用集合(collection)和文档(document)来描述和存储数据,集合(collection)就相当于表,文档(document)相当于行,字段相当于列,不像MySQL之类的关系型数据库,表结构是固定的,比如某一行由若干列组成,行行都一样,而 MongoDB 不同,一个集合里的多个文档可以有不同的结构,更灵活一些。

特点

  1. 没有表结构的限制
  2. 完全的索引支持
  3. 良好的数据安全性和方便的规模扩展
  4. 完善的文档支持和驱动支持

缺点
1.多表关联: 仅仅支持Left Outer Join

2.SQL 语句支持: 查询为主,部分支持

3.多表原子事务: 不支持

4.多文档原子事务:不支持

5.16MB 文档大小限制,不支持中文排序 ,服务端 Javascript 性能欠佳

适用场景
网站数据、缓存等大尺寸、低价值的数据
在高伸缩性的场景,用于对象及JSON数据的存储。

接下来是关于mongodb的常规操作

【数据库操作】

  • show dbs

    查看所有的数据库

  • use [数据库名]

    使用数据库
    创建数据库:当use的时候,如果该数据库不存在,系统就会自动创建一个数据库。
    如果use之后没有创建任何集合。系统就会删除这个数据库。

  • db

    查看当前使用(指向)的的数据库

  • db.dropDatabase()

    删除正在使用的数据库

【集合操作】

  • db.createCollection(name,options)

    创建集合
    name是集合名
    options是可选参数

  • db.集合名.drop()

    删除集合

  • show collections

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

  • db.集合名.renameCollection(新的集合名)

【文档操作】

- 插入

db.集合名.insert(一条文档数据/多条文档数据的一个数组)
db.集合名.insertOne(一条文档数据)
db.集合名.insertMany(多条文档数据的一个数组)
db.集合名.save(一条文档数据)

- 更新

db.集合名.update()
db.集合名.updateOne()
db.集合名.updateMany()
db.集合名.save(一条文档数据)

- 删除

db.集合名.remove()
db.集合名.remove({}) :删除所有文档

db.集合名.deleteMany({}) :删除所有文档
db.集合名.deleteOne():删除一条文档

- 查询

db.集合名.find()
  • 条件

          等于 {<key>:<value>}  db.col.find({"by":"菜鸟教程"}).pretty() where by = '菜鸟教程'
          小于 {<key>:{$lt:<value>}}  db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
          小于或等于  {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
          大于  {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
          大于或等于  {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
          不等于  {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50
    
  • 逻辑

     $or 或 / $and 与 / $nor 非
     and
     传入多个键(key),每个键(key)以逗号隔开
     db.col.find({key1:value1, key2:value2}).pretty()
     or
     关键字 $or,
     db.col.find({$or: [{key1: value1}, {key2:value2}]}).pretty()
    

- 分页

限制条数
db.集合名.find().limit(数量)

跳过指定数量的数据
db.集合名.find().limit(每页显示条数).skip((当前页-1)*每页显示条数)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值