MongoDB-非关系型数据库

作者: honehou | 来源:发表于2016-09-30 18:08 被阅读0次

NoSQL

NoSQL,指非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库(RDBMS)的数据库管理系统的统称。NoSQL用于超大规模数据的存储(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。NoSQL与关系型数据库存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作,一般有水平可扩展性的特征。NoSQL的四大分类为:键值存储数据库、列存储数据库、文档型数据库(MongoDB属于该类)、图形数据库。

关于SQL与NoSQL详细区别可参考:NoSQL 简介 | 菜鸟教程

MongoDB

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

推荐一个图形化管理工具Robomongo:
https://robomongo.org/download

  • 概念:数据库、集合、文档(Databases、Collections、Documents)

官方文档中,MongoDB的基本概念如下:

Databases:
In MongoDB, databases hold collections of documents.
Collections:
MongoDB stores documents in collections. Collections are analogous to tables in relational databases.
Documents:
MongoDB stores data records as BSON documents. BSON is a binary representation of JSON documents, though it contains more data types than JSON.

MongoDB 将数据存储为一个文档,文档包含在集合中,而集合包含在数据库中。文档的数据结构由键值(key=>value)对组成(即BSON),类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。MongoDB与SQL基本概念的对比如下图:


MongoDB与SQL基本概念对比
文档
集合

MongoDB与PHP

  • MongoClient类:是PHP与MongoDB的连接管理器,用于创建和管理连接。
    MongoDB 类:该类的实例用于和数据库进行交互。注意集合名不能包括$而数据库名可以。
    MongoCollection类:该类的实例代表着一个MongoDB集合,可进行文档的CURD操作。
  • 数据库的连接与创建
$m = new MongoClient(); // connect
$db = $m->test; // get the database named "test",if not then create
  • 创建集合
$collection = $db->createCollection("collection");// create a collection named "collection"
  • 插入文档
$document = [ 
    "name" => "sue", 
    "age" => 26,
    "status" => "A",
    "group" => [
        "news" => "news",
        "sports" => "basketball"
    ]
];
$collection->insert($document);// insert document
在Robomongo中查看文档是否插入
  • 查找文档
$findOne = $collection->findOne(array("name" => "sue"));
var_dump($findOne);
查找文档结果
  • 更新文档
$newData = [
    '$set' =>[
        "age" => 18,
        "newData" => "newData"
    ]
];
$collection->update(array("name" => "sue"),$newData);
$findOne = $collection->findOne(array("name" => "sue"));
var_dump($findOne);

注意此处$newData,首先$set需要用单引号括起来(双引号会解析变量),其次实际更改的内容放在第二维数组里,否则操作会直接覆盖原数据。在格式正确的基础上,若新数据与原数据字段名相同的则修改,不同则添加。

更新文档
  • 删除文档
$collection->remove(array("name" => "sue"),array("justOne" => true));

对于array("justOne" => true),表示只删除一个文档,如果它为false则会删除全部符合删除条件的文档。

参考:MongoDB官方文档PHP官网MongoDB 教程 | 菜鸟教程

相关文章

  • MongoDB-非关系型数据库

    NoSQL NoSQL,指非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关...

  • 116.mongodb

    mongodb:非关系型数据库##一:非关系型数据库NoSQL全称-不仅SQL非关系型数据库的主要特点:非关系型的...

  • 数据库的分类和常见的数据库

    分类:关系型数据库和非关系型数据库常见的关系型数据库有:mysqlOracleSQLserver 非关系型数据库:...

  • Mongodb and pymongo

    mongodb:非关系型数据库 一: 非关系型数据库NoSQL全称--Not Only Sql 非关系型数据库主要...

  • 云计算 | AWS | SimpleDB 与 RDS

    非关系型数据库:SimpleDB 关系型数据库:RDS 1. 非关系型数据库与传统关系型数据库的比较 2. Sim...

  • MySQL

    mysql 分为关系型数据库和非关系型数据库 关系型:MySQL,DB2,sqlte...等 非关系型数据库:mo...

  • MySQL基础理论

    关系型数据库和非关系型数据库特点对比 关系型数据库 非关系型数据库 Oracle典型版本 大版本经典版本号77.3...

  • Python操作MySQL(待续)

    数据库分类框架 关系型数据库:Mysql,Oracle,Sqlite 非关系型数据库:MongoDB,Redis非...

  • 1.数据库介绍

    RDMBS 1.数据库分为关系型数据库,和非关系性数据库 mongdb 非关系形数据库 mysql 关系型数据库 ...

  • 模板项目:Flask + LeanCloud + 阿里云Cent

    选择后台 关系型数据库 VS 非关系型数据库? 传统Mysql,sqlite等非关系型数据库数据类型局限,如今网页...

网友评论

    本文标题:MongoDB-非关系型数据库

    本文链接:https://www.haomeiwen.com/subject/wxblyttx.html