详解MongDB数据库

NoSQLmysql

若杀死进程应使用pkillweb

数据设计模式:分布式、非关系型、不提供ACIDredis

特性:简单数据模型、源数据和应用数据分离、弱一致性算法

优点:sql

  避免没必要要的复杂性mongodb

  高吞吐量,数据库

  高 水平扩展能力和低端硬件集群编程

  不使用对象-关系映射设计模式

缺点:浏览器

   不支持ACID

   功能过于简单

   没有统一的数据查询模型

 

特色:

处理差大量的数据

运行再便宜的pc服务器集群上

击碎了性能瓶颈

 

使用场景:

一、对数据并发读写

二、对海量数据的高效率存储与访问

三、对数据的高可扩展性和高可用性(分布式)

NOSQL的数据存储模型

   键值模型

        数据模型:key-value存储

        查找速度快

        缺点:数据无结构,一般被当作字符串或二进制数据

        应用场景:内容缓存

        实例:redis、Dynmo

   列式模型

        数据模型:数据按列存储,将一列数据存在一块儿

        优势:查找迅速,可扩展性强、易于实现分布式

        缺点:功能相对于SQL有限

        应用场景:分布式文件系统或分布式存储

        实例:Bigtables、CassandraHBaseHypertable

   文档模型

        数据模型:与键值模型类似,value指向结构化数据;

        优势:数据格式不严格,无需定义事先定义结构

        缺点:查新性能不高,缺少统一查询语法

        应用场景:web应用,

        实例:MongoDB、CouchDB

   图式模型

        数据模型:图结构模型

        优势:利用图结构相关算法提升性能,并是特殊场景应用需求

        缺点:难以实现分布式、功能有限

        应用场景:社交网站、推荐系统、关系图谱

        实例:Neo4J

 

MongoDB

管理端口:28017    服务端口:27017

特性

一、基于文档数据库系统(JSONBSON半结构化数据/)

二、保证其性能

      C++研发

      支持各类索引

      不支持事务,

      操做是在内存中进行(延迟写操做)

三、支持扩展性

       支持复制

四、支持基于文档的查询

五、支持使用数据的分组集合操做

六、支持网格文件系统(GridFS)

七、支持地理位置空间索引

八、支持动态查询,查询的性能剖析

九、基于复制进行故障转移,经过选举协议选举。自动故障转移

适用场景

一、web网站

二、缓存

三、海量存储

四、高可扩展性

五、应用程序编程环境中

数据库模型

面向collection(集合)的数据库

使用数据库:但数据库无需建立

每个文档至关于一个mysql的行,多个文档组合起来至关于一个集合,至关于mysql的集合

集合无需事先定义

基于C/S架构:服务器端mongod,客户端mongo

 

 

安装

一、在官网上能够下载MongoDB rpm包的yum源:www.mongodb.com

    yum安装: yum  install  -y  mongodb-org

二、建立用户:mongod,而且建立存放数据文件的文件夹mkdir/mongodb/data,并给这个文件夹更改属主属组。

2.一、更改配置文件中的数据文件存放位置(/etc/mongod.conf):dbpath=/mongodb/data

2.二、开启httpinterface=true这一项,使mongodb开启28017端口,这是一个管理端口,能够经过浏览器进行访问。

三、启动mongodservice   mongod  start

 

客户端命令

mongo      选项      数据库地址             //登陆数据库

            --host     //指定主机

            -u/-p      //指定帐号密码

     提示:大可能是mongodb默认不认证,因此直接输入命令:mongo能够直接连上本地数据库。

            默认打开数据库为test

show dbs    //查看当前数据库

show  users   //显示用户

show   profile   //显示性能剖析

show    logs   //显示日志文件

show     log   日志名   // 显示日志的内容

use      数据库名     // 设置默认数据库,mongoDB不用建立数据库,在不往数据库中插入数据以前是不会建立数据库的

show   collections   //查看集合

db.collection名称 .insert ({name : "hhj"})   //插入数据

db.collection名称.find().limit(3)    //查看collection中的数据 ,并只显示前三行

db.collection名称.stats()      //查看collection状态

db. collection名称.drop()      //删除collection

db.sun.count()    //统计文档个数

 

基本操做

查询:

   db.coll名.find (

             {age: { $gt: 18} },       -->查询标准

             { name:1,  address:1}   -->显示字段

).limit(5)      -->只显示前5个符合条件的

 

插入:

db.coll名.insert

     name: "sue",

     age: 26,

     status: "A",

     groups : [ "sd" , "wd" ]

 

修改:

db.coll名.update(    

   { age: {$ gt:15 } },    -->查询条件,字段加值

   { $set: { status: "A"} },    -->要改的字段及其值

   {multi: true }        -->默认只改变第一个符合条件的行。设为true,则改变全部符合条件的行。

 

删除:

db.coll名.remove (

    {  status: "D "}   -->删除标准

)

高级操做

定义循环添加内容:

for (i=1;i<=100;i++)        db.sun.insert ( { name :"User"+i,age:i,Gender:"M" } )

 定义变量i,从1100     插入数据            +i是字符引用变量i

 

find用法

 比较运算

$gt:挑选指定字段大于指定值的文档,格式:{字段:($gt:}}

$gte:大于等于

$in:等于

$lt:小于

$lte:小于等于

$ne:不等于

$nin:不存在

     例: db.sun.find({age: {$lte: 30}},{name:1,age:1})  //显示年龄小于等于30,只显示nameage

  逻辑运算

逻辑运算通常用于链接多个选择条件,

$or:或运算,格式:{$or:[{条件1}{条件2}]}

$and:与运算

$not:非运算

$nor:反运算

     例:db.sun.find({$and:[{age:{$gt:61}},{age:{$lt:80}}]})   //大于61,小于80

     例:db.sun.find({$and:[{age:{$gt:61}},{age:{$lt:80}}]},{name:1})  //只显示name行,大于61,小于80

  元素运算

      根据文档中是否存在某字段等条件来挑选文档,语法格式:{$exists:  boo},bootrue为返回存在指定字段的文档,为false则返回不存在指定字段的文档。

$exists:根据指定字段的存在性挑选文档

$mod:将指定字段的值进行取膜运算

$type:返回指定字段的值类型为指定类型的文档

相关文章
相关标签/搜索