美文网首页
mongo简单使用

mongo简单使用

作者: 孩纸是坏孩纸 | 来源:发表于2016-01-13 23:17 被阅读0次

    mongoDB简介

    简介

    mongoDB文档数据库,存储的是文档(Bson->json的二进制化)。

    特点:其内部使用js解释引擎来实现数据的分析,在插入的时候,将数据转换成二进制的json来存储,在查询的时候,将数据转换成json对象,方便处理。需要注意:mongoDB主要是和node.js配合使用。

    问题:与传统关系型数据有什么区别?

    答:没有表结构的概念,传统的关系型数据库的数据必须按照表的结构来存储(行、列形成的二维表)

    在mongoDB中没有表的概念,将表换了一种称呼,叫做collection,对应表中记录也换了一种称呼,叫做document。它有数据库的概念,就是多个collections组成的集合。

    选项

    关系型数据库

    mongoDB

    redis

    memcache

    数据库

    yes

    yes

    no

    no

    数据表

    yes(二维)

    collection

    no

    no

    记录

    yes(一行)

    document(json对象)

    key-values(string link hash set orderset)

    key-values

    安装

    1.下载对应的稳定版源代码,并放置到(/usr/local/src目录下)

    官网:www.mongodb.org

    中文手册:http://www.runoob.com/mongodb/mongodb-tutorial.html

    2.解压文件

    # tar -zxvf XXX.tar.gz

    3.不需要编译,因为官方已经编译好,可以直接使用

    4.启动mongoDB如果mongoDB以后台运行,必须加上--logpath后面必须要指定日志文件的名称

    # ./bin/mongod --dbpath /path/to/database --logpath /path/to/log.txt--fork --port 27017

    注意:

    mongodb非常的占磁盘空间,刚启动后要占3-4G左右,如果你用虚拟机练习,可能空间不够,导致无法启动。可以用--smallfiles选项来启动,将会占用较小空间 ,400M左右。

    参数解释:

    --dbpath数据存储目录

    --logpath日志存储目录

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

    --fork后台进程运行

    mongoDB使用

    入门命令

    1. show dbs查看当前的数据库

    2. use databaseName选库

    3. show tables查看当前库下的数据表

    注意:即使数据不存在,也可以直接切换,会自己创建。但是如果在数据库中不创建collection是不会显示的。

    创建数据库

    mongoDB的库是隐式创建,当use一个不存在的库的时候,在该库下创建tables(collection)即可创建库

    创建表

    1.显式创建

    db.createCollection(‘collectionName’)创建表

    2.隐式创建

    db.collectionName.insert(document)在插入数据的时候,隐式的创建

    3.可以使用

    show tables查看当前数据库下的表(collection)

    show collections也可以查看当前数据库下的表(collection)

    删除表

    db.collectionName.drop()删除表

    删除数据库

    db.dropDatabase()删除数据库

    基本增删改查命令

    注意:mongoDB又叫无模式(没有严格意义上的数据结构)的文档型(bson)的nosql(不使用SQL语句查询)数据库

    注意:mongoDB会自动帮我们维持一个主键ID(_id)不需要也不建议手工的修改

    增加数据insert

    # db.collectionName.isnert(document)注意这里的document是一个json对象

    例如:

    单条记录:

    # db.collectionName.insert({_id:5, age:18, name:’asion’});

    多条记录

    # db.collectionName.insert(

    [

    {date:'2014-12-12',study:'mongodb'},

    {_id:9,gender:'male',name:'caoyang'}

    ]

    )

    删除数据remove

    # db.collection.remove(查询表达式,选项);

    选项是指{justOne:true/false},是否只删一行,默认为false

    注意

    1:查询表达式依然是个json对象

    2:查询表达式匹配的行,将被删掉

    3:如果不写查询表达式,tables中的所有文档将被删掉

    例1: db.students.remove({sn:’001’});

    删除students表中sn属性值为’001’的数据

    例2: db.students.remove({gender:’m’},{justOne:true});

    删除students表中gender属性为m的文档,只删除1行

    修改数据update

    # db.collection.update(查询表达式,新值)

    注意

    修改什么? --->查询表达式指定

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

    例如:

    #db.news.update({name:'asion'},{name:'caoyang'});

    是指选中news表中,name值为qq的数据,并把其文档值改为{name:’caoyang’}

    结果:文档中的其他列不见了,改后只有_id和name列数据

    注意-->新值直接替换了旧值,而不是修改,那我们设置的值做了一个全部的替换

    所以:如果是想修改数据的某列,可以用$set关键字

    # db.collectionName.update({name:'asion'}, {$set:{name:’caoyang’}})

    查询数据find, findOne

    # db.collection.find(查询表达式,查询的列);

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

    例1:db.students.find()

    查询students所有数据

    例2: db.students.find({},{gendre:1})

    查询所有数据的gender属性(_id属性默认总是查出来)

    例3: db.students.find({},{gender:1, _id:0})

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

    例3: db.students.find({gender:’male’}, {name:1, _id:0});

    查询所有gender属性值为male的数据中的name属性

    中级技巧-查询表达式

    查询表达式

    在查询时候的时候,使用的条件表达式

    1.简单的查询表达式

    {filed:value}

    作用:是指查询field列的值为value的数据

    2: $ne代表!=

    {field:{$ne:value}}

    作用:查出filed列的值不等于value的数据

    注意:如果在开发中忘记了如何使用?

    答: 善用help和百度

    # db.help()

    # db.user.help()

    # db.user1.help()

    注意:HBase

    php操作mongoDB

    注意:如果要使用js来操作mongoDB,需要使用node.js这个服务器(js解释器)作为名单客户端来操作mongoDB

    php-mongoDB扩展

    1.下载源码

    2.上传到/usr/local/src

    3.执行phpize命令

    4.执行make && make install

    5.生成目录

    6.修改php.ini

    9.重启php-fpm

    10.创建测试文件

    相关文章

      网友评论

          本文标题:mongo简单使用

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