• mongodb使用简单文档


    1、mongodb安装与卸载

    1.1、安装

    python -m pip install pymongo
    或
    pip install pymongo
    
    • 1
    • 2
    • 3

    如果要安装指定版本:

    python -m pip install pymongo==3.5.1
    
    • 1

    对已有的版本进行升级:

    python -m pip install --upgrade pymongo
    
    • 1

    1.2、卸载

    pip uninstall pymongo
    
    • 1

    或者

    sudo systemctl stop mongodb
    sudo apt purge mongodb
    sudo apt autoremove
    
    • 1
    • 2
    • 3

    1.3、查看当前版本

    pip show pymongo
    
    • 1

    或者在终端输入:

    python
    import pymongo
    print(pymongo.version)
    
    • 1
    • 2
    • 3

    1.4、查看当前mongodb数据库状态

    sudo systemctl status mongodb
    
    • 1

    1.5、关闭数据库

    sudo systemctl stop mongodb
    
    • 1

    1.6、打开数据库

    sudo systemctl start mongodb
    
    • 1

    1.7、重启数据库

    sudo systemctl restart mongodb
    
    • 1

    1.8、设置数据库开机时是否自动启用(默认启用)

    sudo systemctl disable mongodb
    sudo systemctl enable mongodb
    
    • 1
    • 2

    1.9、故障排查

    运行mongo,应显示如下:
    在这里插入图片描述
    如果报错如下:

    Failed to connect to 17.0.0.1:27017
    
    • 1

    可以运行以下指令安装mongo client与server:

    sudo apt-get install mongo-client
    sudo apt-get install mongo-server
    
    • 1
    • 2

    或者
    运行sudo systemctl start mongodb时报错:

    unit mongodb.service not found
    
    • 1

    可以安装:

    sudo apt-get install mongo-server
    
    • 1

    2、数据库可视化工具安装及使用

    暂时推荐安装的是Navicat

    2.1、安装

    下载网址:

    https://navicat.com.cn/products
    
    • 1

    进入网址后,点击最上面的“工具”选项,会出现如下界面:
    在这里插入图片描述选择Navicat Premium 16 免费试用:
    在这里插入图片描述然后选择下面的位置1,点击下载。

    下载后的文件默认放在download文件夹下,如果没有可以在浏览器的下载管理里找到下载的内容点击打开文件夹,然后在该文件夹下打开终端,输入:

    chmod +x navicat16-premium-cs.AppImage
    ./navicat16-premium-cs.AppImage
    
    • 1
    • 2

    完成安装。

    2.2、Navicat工具的使用

    安装完成后,在软件管理里面找到该软件并打开,选择试用,进入软件界面:
    在这里插入图片描述
    点击左上角的“连接”,选择MongoDB进行新建连接:
    在这里插入图片描述连接名可以随便取,点击确定连上数据库。然后就可以对数据库的内容进行查看并操作了。

    2.3、Navicat工具刷新试用期

    Navicat的试用版只有14天,超过14天后无法打开Navicat,可以使用下列指令刷新试用期时间:

    rm -rf ~/.config/navicat
    rm -rf ~/.config/dconf/user
    
    • 1
    • 2

    3、python下数据库操作常用指令

    3.1、数据插入指令

    3.1.1、单条数据插入指令:insert_one

    insert_one会向数据库表中单独插入一条数据。

    from pymongo import MongoClient
    myclient = MongoClient("mongodb://localhost:27017")  # Host以及port
    db = myclient["myDatabase"]  ##指定要操作的数据库
    #mycol = db["collection1"]     ##指定要操作的数据库表,不同的写法
    mycol = db.collection1   # 指定要操作的数据库表,没有则自动创建
    result = mycol.insert_one({"name":"lisi","age":22,'gender':'female'})   # 插入一条数据,如果没出错那么说明连接成功
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行后终端显示:

    <pymongo.results.InsertOneResult object at 0x7fb9a3301760>
    
    • 1
    3.1.2、多条数据插入指令:insert_many

    insert_many可以同时插入多条数据,即使它们的参数不完全一致。

    import pymongo
    myclient = pymongo.MongoClient("mongodb://localhost:27017")  # Host以及port
    db = myclient["myDatabase"]  ##指定要操作的数据库
    coll = db["collection1"]     ##指定要操作的数据库表
    mylist = [
      { 'name': 'hanmei', 'age': 19 },
      { 'name': 'wanghua', 'gender': 'male' },
      { 'name': 'lihong', 'gender': 'female' }
    ]
    y = coll.insert_many(mylist)
    print(y)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.2、数据删除指令

    3.2.1、单条数据删除指令:delete_one

    delete_one指令会搜索并删除第一条满足条件的数据

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result = coll.delete_one({'name':'hanmei'})
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    上述示例中虽然给的检索关键词是“name"=“hanmei”,但是其只会删除表中第一条“name"="hanmei"的数据而不会对后续的数据进行操作。

    3.2.2、单数据查找并删除指令:find_one_and_delete

    该指令与前一条指令类似,但是区别在于该指令可以通过返回值区分删除是否成功:

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result = coll.find_one_and_delete({'name':'lihong'})
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这里相当于删除了一条name为lihong的数据,如果找到并删除了会返回被修改的数据:

    {'_id': ObjectId('64f7f81835699cd683b594b2'), 'name': 'lihong', 'gender': 'female'}
    
    • 1

    如果没有找到会返回None。

    3.2.3、多条数据删除指令:delete_many

    delete_many会同时删除数据库中所有满足条件的数据

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result= coll.delete_many({
        'gender':'male'
    })
    print(result.raw_result)  #查看返回的结果
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    上述指令执行时搜索数据库表中所有gender=male的数据并进行删除,删除后的数据库表显示如下:

    3.3、数据查找指令

    3.3.1、数据库表查询指令:find

    find函数可以返回被查询的数据库表内的所有数据,属于无条件查找

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result = coll.find()
    for each in result:
        print(each)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    3.3.2、条件查询指令:find

    可以在find中添加需要查询的关键字,实现带条件的查询,此时会满足所有满足条件的结果:

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result = coll.find({'name':'lihong'})
    #输出的两种方式:
    #打印单条
    #print(list(result)[0])
    #或打印全部
    for each in result:
        print(each)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    3.3.3、多条件查询指令:find

    如果在find中同时添加多个条件,可以实现多条件的数据查询指令:

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result = coll.find({'name':{'$in':['lisi','lihong']},'gender':'female'})
    for each in result:
        print(each)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    如上式,查询的条件为name为’lisi’或者’lihong’,同时满足gender为female的数据。

    3.3.4、仅返回第一条数据的条件查询指令:find_one

    该函数返回第一条满足条件的数据:

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result = coll.find_one({'name':'lisi'})
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    3.3.5、字段查询指令:distinct

    该指令用于查询某个字段下存在哪些数据类型

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    Scode = coll.distinct( "age")
    print (Scode)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    上述代码的含义是查询当前age字段下存在哪几种不同的数据

    3.4、数据修改指令

    3.4.1、单字段修改指令:update_one

    查询满足条件的第一条字段并修改其对应参数:

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result = coll.update_one({'name':'lisi'},{'$set':{'age':'20'}})
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意如果这里查询的条件不满足则不会进行任何操作。

    3.4.2、单数据查找并修改指令:find_one_and_update
    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result = coll.find_one_and_update({'name':'lihong'},{'$set':{'name':'hansi','age':'6'}})
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这里相当于找到第一条满足条件name为lihong的数据,修改它的name为hansi,age为6
    注意这里是找到并修改,所以对于没有输入的字段是不会修改的,还是会保留原来的值。同时执行该指令后终端会显示被修改的单条数据的具体信息:

    {'_id': ObjectId('64f7f78e687db263aba6bd15'), 'name': 'lihong', 'gender': 'female'}
    
    • 1

    此外,如果查找给的条件没有找到满足的数据时,result的返回值会变成None,这是find_one_and_update与update_one之间的区别。

    3.4.3、单数据查找并替换指令:find_one_and_replace

    前面find_one_and_update指令查找一条数据并进行修改时只会修改传入的一部分参数,对于其他参数不进行修改。如果需要将整个参数都替换掉的话可以直接使用find_one_and_replace指令:

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result = coll.find_one_and_replace({'name':'hanmei'},{'name':'jeson','weight':56})
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    上述指令执行时会查找第一条满足name = hanmei的数据并使用后面的数据进行替换。该指令与update最大的区别在于update会保留那些传入参数中没有附带的字段,但是replace则会清空这些字段。

    3.4.4、多数据查找并替换指令:update_many

    该指令会批量修改满足查找要求的数据,将对应的字段全部修改为一致。

    from pymongo import MongoClient
    host = 'localhost'   # 你的ip地址
    client = MongoClient(host, 27017)  # 建立客户端对象
    db = client["myDatabase"]
    coll = db["collection1"]
    result = coll.update_many({'name':'lisssi'},{'$set':{'weight':'48','age':16}})
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    LeetCode HOT 100 —— 10.正则表达式匹配
    Android检测其他应用是否安装
    网页布局的方法有哪些?
    前段入门-CSS
    vue项目中显示第三方外部链接的页面
    vue-element-admin 集成框架设置中文语言
    Ruby编程语言面试题库和答案(语法、代码)
    美颜SDK免费版怎么样?应该如何选择美颜SDK?
    计算机网络入门
    R语言作业wine 数据
  • 原文地址:https://blog.csdn.net/YiYeZhiNian/article/details/134444299