美文网首页MongoDB我爱编程
MongoDB入门学习1 - 使用介绍

MongoDB入门学习1 - 使用介绍

作者: 红薯爱帅 | 来源:发表于2017-10-24 20:14 被阅读19次

    1,MongoDB简单介绍

    1.1,NoSQL数据库

    • 数据库:进行高效的、有规则的进行数据持久化存储的软件

    • NoSQL数据库:Not only sql,指代非关系型数据库
      优点:高可扩展性、分布式计算、低成本、灵活架构、半结构化数据、简化关联关系
      缺点:没有标准化、有限查询、不直观

    • 常用NoSQL数据库

    类型 常用NoSQL数据库 典型代表 简介
    列存储 Hbase、Cassandra、Hypertable Hbase 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
    文档存储 MongoDB、CouchDB MongoDB 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。
    key-value存储 TokyoCabinet、BerkeleyDB、MemcacheDB、redis Memcache Redis 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
    图存储 FlockDB FlockDB 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
    对象存储 Neo4J、Versant Versant 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
    xml数据库 BerkeleyDB、BaseX BaseX 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

    1.2,MongoDB介绍

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。
    MongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
    它的特点是高性能、易部署、易使用,存储数据非常方便。

    主要功能特性有:

    • C++编写的运行稳定性能高的数据.
    • 面向集合存储,易存储对象类型的数据。
    • 模式自由。
    • 支持动态查询。
    • 支持完全索引,包含内部对象。
    • 支持查询。
    • 支持复制和故障恢复。
    • 使用高效的二进制数据存储,包括大型对象(如视频等)。
    • 自动处理碎片,以支持云计算层次的扩展性。
    • 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
    • 文件存储格式为BSON(一种JSON的扩展)。
    • 可通过网络访问。

    2,安装说明

    2.1,安装

    • MongoDB官网: https://www.mongodb.com/ ,注意:偶数为稳定版,如1.6,奇数为开发版,如1.7
    • MongoDB支持Windows、Linux安装,安装很简单,网上资料很多,这里就不赘言。
    • Ubuntu下,安装mongodb服务
    sudo apt-get install mongodb
    mongo -version
    mongo
    
    • 安装python的mongodb包
    pip install pymongo
    

    2.2,启动命令

    • 通过service启动或停止mongodb
    sudo service mongodb start
    sudo service mongodb stop
    sudo service mongodb restart
    sudo service mongodb status
    
    • 通过mongod命令直接执行
    sudo /usr/bin/mongod --config /etc/mongodb.conf &
    sudo /usr/bin/mongod --dbpath /home/mongodb/data &
    # 此处的路径表示你要创建数据库的文件夹,其中data文件夹需要自己在MongoDB路径下创建,系统不会在动帮你生成
    

    2.3,配置文件和数据文件

    • 配置文件地址:/etc/mongodb.conf

    • mongodb的文件结构,单个collection是三个文件,例如person.0、person.1、person.ns(和Mysql的数据文件结构相似)

    .
    ├── hero.0
    ├── hero.1
    ├── hero.ns
    ├── journal
    │   ├── j._0
    │   ├── prealloc.1
    │   └── prealloc.2
    ├── local.0
    ├── local.ns
    ├── mongod.lock
    ├── person.0
    ├── person.1
    ├── person.ns
    ├── stu.0
    ├── stu.1
    └── stu.ns
    

    3,用户交互

    3.1,命令行交互

    • MongoDB后台管理Shell,直接输入mongo即可
    $ ./mongo
    MongoDB shell version: 3.0.6
    connecting to: test
    Welcome to the MongoDB shell.
    > show dbs
    local   0.078125GB
    test    0.203125GB
    > use test
    switched to db test
    > show collections
    system.indexes
    users
    > db.users.find()
    { "_id" : ObjectId("59ef19ff87e6b6c5f2b3d215"), "name" : "kevin" }
    
    • 以下信息并没有测试成功,需要再研究下
    数据库的信息存储在集合中,他们统一使用系统的命名空间:DBNAME.system.*
    DBNAME 可用 db 或数据库名替代
    
    DBNAME.system.namespaces :列出所有名字空间
    DBNAME.system.indexs :列出所有索引
    DBNAME.system.profile :列出数据库概要信息
    DBNAME.system.users :列出访问数据库的用户
    DBNAME.system.sources :列出服务器信息
    

    3.2,MongoDb Web用户界面

    MongoDB 提供了简单的 HTTP 用户界面。如果你想启用该功能,需要在启动的时候指定参数 --rest 。
    MongoDB 的 Web 界面访问端口比服务的端口多1000。
    如果你的MongoDB运行端口使用默认的27017,你可以在端口号为28017访问web用户界面,即地址为:http://192.168.1.89:28017。

    • 启动命令
    $ sudo mongod --dbpath=/var/lib/mongodb --rest
    
    • 可视化页面


      mongodb.png

    4,软件开发

    4.1,Python

    #-*- coding:utf-8 -*-
    import pymongo
    
    def system():
        print('◆您将进入数据库管理系统,数据无价、谨慎操作!◆')
        print('◇1:查看数据◇')
        print('◇2:增加数据◇')
        print('◇3:修改数据◇')
        print('◇4:删除数据◇')
        print('◇5:搜索数据◇')
        print('●6:退出数据库管理系统●')
    
        # 建立与mongodb的连接
        client = pymongo.MongoClient('192.168.1.89', 27017)
        # 得到数据库
        stu = client['person']
        # 得到一个数据集合
        message = stu['message']
    
        while True:
            order = int(raw_input('请输入相关指令:'))
            if order==1:
                exit = message.count()
                if exit==0:
                    print('抱歉,数据库中目前没有相关数据!')
                else:
                    for data in message.find():
                        content = data['name']+data['age']+data['sex']
                        print(content)
            elif order ==2:
                name = raw_input('请输入学生姓名:')
                age = raw_input('请输入学生年龄:')
                sex = raw_input('请输入学生性别(男/女):')
                data = {
                    'name':name,
                    'age':age,
                    'sex':sex,
                }
                message.insert_one(data)
                print ('添加成功!')
    
            elif order == 3:
                name = raw_input('请输入要修改的学生姓名:')
                exit = message.count({'name': name})
                if exit != 0:
                    age = raw_input('请输入修改后的学生年龄:')
                    message.update({'name':name},{'$set':{'age':age}})
                    print('修改成功')
                else:
                    print '抱歉,数据库中没有这个学生的信息!'
    
            elif order == 4:
                name = raw_input('请输入要删除的学生姓名:')
                exit = message.count({'name': name})
                if exit != 0:
                    message.remove({'name':name})
                    print('删除成功')
                else:
                    print '抱歉,数据库中没有这个学生的信息!'
    
            elif order == 5:
                name = raw_input('请输入要查询的学生姓名:')
                exit = message.count({'name':name})
                if exit!=0:
                    data = message.find_one({'name':name})
                    content = data['name']+data['age']+data['sex']
                    print content
                else:
                    print '抱歉,数据库中没有这个学生的信息!'
    
            elif order == 6:
                print('感谢您的使用!')
                break
            else:
                print('您的输入有误,请输入有效指令(1/2/3/4/5)')
    
    if __name__ == '__main__':
        system()
    

    4.2,Js

    • 暂略

    5,高级应用

    6,参考页面

    相关文章

      网友评论

        本文标题:MongoDB入门学习1 - 使用介绍

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