zoukankan      html  css  js  c++  java
  • mongodb初步理解

    memcached KV缓存

    redis  KV缓存

    1.mongodb 文档数据库,存储的是文档(Bjson>json的二进制化)

    mongodb是在磁盘上分配一块空间,将该空间格式化成gridft格式,在该空间存储json格式文档,为了介绍存储量,将json以二进制的形式存储。

    mongodb用chrome V8引擎来解析js。

    2.mongodb特点:

    内部执行引擎为JS解析器,把文档存储成bson结构,在查询时候转换为JS对象,并可以通过熟悉的JS语法来操作。

    mongodb与传统数据库的不同:

    传统型数据库:结构化数据,定好了表结构后,每一行的内容,必须符合表结构。

    mongodb文档型数据库:表下的每篇文档都可以有自己的独特结构(json对象都可以有自己的属性和值)

    思路:如果有电影,影评,影评回复,回复的打分。在传统型数据库中需要多表关联,在文档型数据库中一篇文档就可以完成,

    {
        frim:"小红帽”,
        
        comment:[{
                  cid:19,
                            contect:"风格与众不同",}
                  {cid:20,
                            rcontect:"支持"}]
                            }
                        ]
    }
    

    3.mongodb的安装

    https://www.mongodb.com/

    右上角 Download

    解压文件即可,不用编译,本身就是编译后的二进制可执行文件。

    bsondump :导出bson结构

    mongo:客户端(相当于mysql.exe)

    mongod:服务器端(相当于mysqld.exe)

    mongodump:整体数据库导出(二进制,相当于mysqldump)

    mongoexport:导出易识别的json文档和csv文档。

    mongodrestore:数据库整体导出

    mongods:路由器分片时用。

    4.启动mongod服务

    ./bin/mongod --bdpath/path/to/database --logpath/path/to/log-file --fork --port 27017

    参数解释:

    --bdpath:数据库存储目录

    --logpath:日志存储文件

    --port:运行端口(默认27017)

    --fork:要不要在后台运行。

    5.mongodb非常的占磁盘空间,

    刚启动要占3-4G左右。如果用虚拟机练习,可能空间不够,导致无法启动。

    可以用 --smallfiles选项来启动。将会占用较少空间 400M左右。

    6.mongo入门命令:

    show dbs :查看当前数据库

    use databaseName:选库

    show tables/collections :查看当前库下的collection

    如何建库:

    在mysql中用create table ,而在mongodb中隐式创建,你可以use一个不存在的库,然后再该库下创建collection,即可创建库。

    db.createCollection("collectionName")创建collection

    collection允许隐式创建: db.collectionName.insert(document)

    7.mongo基本操作

    增:insert

    语法:db.collectionName.insert(document);

    eg:增加单篇文档

    db.sto.insert({"title":"葫芦娃"});

    增加单篇文档并增加ID

    db.sto.insert({"id":1,"title":"葫芦娃"});

    增加多篇文档

    db.sto.insert([

      {"title":"葫芦娃",age:3},

      {"title":"美猴王",age:3},

           {"title":"美猴王",age:3}

    );

    删:remove

    语法:db.collectionName.remove(查询表达式,选项)

    选项是指(justOne:true/false) true:只删除一行,false:删除所有符合条件的数据

    eg:删除一行

    db.sto.remove({"title":"美猴王"},true);

    删除多行

    db.sto.remove({"title":"美猴王"});

    改:uodate

    改那几行?----- 查询表达式

    改成什么样子? -----新值或者赋值表达式

    操作选项 -----可选参数

    语法:db.collection.update(查询表达式,新增,选项)

    db.sto.update({"title":"美猴王"},{"title":"lalala");是指在sto表中,将title=“美猴王”的文档的,将其文档值改成({“title”:“MSN"})

    文档中的其他列都不见了,只剩下"id"和"title".因为以文档为单位

    修改时候赋值表达式:

    $set  修改某列的值

    $unset 删除某个列

    $rename 重命名某个列

    $inc 增长某个列

    $setOnInsert 当upset为true时,并且发生了insert操作时,可以补充字段。

    option的作用

    {upsert:true/false,multi:true/false}

    upsert是指没有匹配的行,则直接插入该行。(和mysql的replace一样)

    eg:db.sto.update({"name":"wuwuw"},$set:{"name":"lili"}},{upsert:true})

    如果有{"name":"wuwuw"}的文档,就被修改成{"name":"lili"}

    如果没有,就添加新文档{"name":"lili"}

    multi:是指修改多行(默认即使是查询表达式命中多行,也只改一行。如果想改多行,就加multi)。

    查:find,findOne

    语法:db.collectionName.find(查询表达式,查询列);

    db.collections.find(表达式,{列1:1,列2:1});

    eg:db.sto.find()

    查询所有文档 所有内容。

    eg:db.sto.find({},{gendre:1})

    查询所有文档的gendre属性(_id属性默认总是查出)

    eg:db.sto.find({},{gendre:1,_id:0})

    查询所有文档的gendre属性,且不查询_id属性

    eg:db.sto.find({gendre:"male"},{name:1,_id:0})

    查询所有文档的gendre属性值为male的文档中的name属性。

  • 相关阅读:
    Stars in Your Window POJ
    Adding New Machine ZOJ
    洛谷 P3400 仓鼠窝
    django启动时报错:Apps aren't loaded yet.
    netstat命令简单使用
    iostat命令简单使用
    linux下查找指定时间内修改过的或新建的文件
    nginx学习之压缩解压篇(七)
    nginx学习之反向代理篇(六)
    nginx学习之静态内容篇(五)
  • 原文地址:https://www.cnblogs.com/maoyizhimi/p/7147462.html
Copyright © 2011-2022 走看看