MongoDB我爱编程

MongoDB入门学习1 - 使用介绍

2017-10-24  本文已影响19人  红薯爱帅

1,MongoDB简单介绍

1.1,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 应用提供可扩展的高性能数据存储解决方案。
它的特点是高性能、易部署、易使用,存储数据非常方便。

主要功能特性有:

2,安装说明

2.1,安装

sudo apt-get install mongodb
mongo -version
mongo
pip install pymongo

2.2,启动命令

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

2.3,配置文件和数据文件

.
├── 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,命令行交互

$ ./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

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,参考页面

上一篇下一篇

猜你喜欢

热点阅读