美文网首页python成长之路
最容易看懂的mongodb数据库

最容易看懂的mongodb数据库

作者: CPP后台服务器开发 | 来源:发表于2018-11-13 07:20 被阅读11次

    python之mongodb学习


    1.首先,先来介绍一下mongdb数据库

    MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

    在高负载的情况下,添加更多的节点,可以保证服务器性能。

    MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

    MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

    主要特点:

    MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
    你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
    你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
    如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
    Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
    MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
    Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
    Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
    Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
    GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
    MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
    MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
    mongodb与mysql命令对比 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,

    我们简单来说硕Mongodb的特点:
    MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。

    MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。


    2.安装使用mongodb数据库
    安装的话,大家自行百度就ok了!!!
    接下来我们开始使用mongodb
    (1)引入pymongo并且建立连接

    #引入模块
    import pymongo
    #建立连接(IP和端口)
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    #myclient = pymongo.MongoClient("localhost",27017)
    

    3.创建数据库
    首先说明一下,mongodb不需要自己创建数据库,可以直接使用的,可以自动创建的。

    #mydb = myclient["test"]
    #两种方式都可以
    mydb = myclient.test
    

    4.创建集合
    注意: 在 MongoDB 中,集合只有在内容插入后才会创建!也就是说,我们需要先创建集合(也就是数据表),再插入一条记录,数据表才会真正创建。

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    #创建数据库
    mydb = myclient.testdb
    #创建表
    mycol = mydb.table
    

    5.插入数据
    有两种插入数据的方法:save() VS insert()
    但两者是有两个区别:
    一、save函数实际就是根据参数条件,调用了insert或update函数.如果想插入的数据对象存在,insert函数会报错,而save函数是改变原来的对象;如果想插入的对象不存在,那么它们执行相同的插入操作.
    二、insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,需要一个个插入。

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient.testdb
    mycol = mydb.table
    #插入数据
    mycol.insert({"name":'john','province':'浙江','age':24})
    

    结果:


    snipaste_20181113_064239.png

    在MongoDB中,每条数据其实都有一个_id属性来唯一标识。如果没有显式指明该属性,MongoDB会自动产生一个ObjectId类型的_id属性。insert()方法会在执行后返回_id值。
    插入多条数据

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient.insert
    mycol = mydb.table
    mycol.insert([{"name":'john','province':'浙江','age':24},
                  {"name":'wangsan','province':'西安','age':12},
                  {"name":'lisi','province':'陕西','age':22},
                  ])
    

    结果:


    snipaste_20181113_064915.png

    上面利用insert演示,但是官方推荐使用insert_one()和insert_many()方法来分别插入单条记录和多条记录。


    6.查询语句
    插入数据后,可以利用find_one()或find()方法进行查询,其中find_one()查询得到的是单个结果,find()则返回一个生成器对象.
    (1)查询单条语句find_one

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient.insert
    mycol = mydb.table
    mycol.insert([{"name":'john','province':'浙江','age':24},
                  {"name":'wangsan','province':'西安','age':12},
                  {"name":'lisi','province':'陕西','age':22},
                  ])
    resuit = mycol.find_one({"name":"wangsan"})
    print(resuit);
    

    结果:

    {'_id': ObjectId('5bea02f229b57602d039f4eb'), 'name': 'wangsan', 'province': '西安', 'age': 12}
    

    (2)查询多条我们可以使用find语句

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient.insert
    mycol = mydb.table
    mycol.insert([{"name":'john','province':'浙江','age':24},
                  {"name":'wangsan','province':'西安','age':20},
                  {"name":'lisi','province':'陕西','age':20},
                  ])
    resuit = mycol.find_one({"name":"wangsan"})
    print(resuit);
    #查找多条
    results = mycol.find({"age":20})
    print(results)
    for result in results:
        print(result)
    

    结果:

    {'_id': ObjectId('5bea02f229b57602d039f4eb'), 'name': 'wangsan', 'province': '西安', 'age': 12}
    <pymongo.cursor.Cursor object at 0x00000000027504A8>
    {'_id': ObjectId('5bea05e629b5761010ddd735'), 'name': 'wangsan', 'province': '西安', 'age': 20}
    {'_id': ObjectId('5bea05e629b5761010ddd736'), 'name': 'lisi', 'province': '陕西', 'age': 20}
    

    7.更新删除
    更新update

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient.testdb
    mycol = mydb.table
    #更新name
    mycol.update({'name':'john'},{'$set':{"name":"30"}})
    #检查是否更新
    result = mycol.find_one({"name":"30"})
    print(result)
    

    结果:

    {'_id': ObjectId('5be8c5b229b5760440220de3'), 'name': '30', 'province': '浙江', 'age': 24}
    

    删除remove

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient.testdb
    mycol = mydb.table
    #删除
    mycol.remove({"name":"30"})
    #检查
    result = mycol.find_one({"name":"30"})
    print(result)
    

    其他也可以参考:https://juejin.im/post/5addbd0e518825671f2f62ee

    相关文章

      网友评论

        本文标题:最容易看懂的mongodb数据库

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