• 在python中的使用


    操作步骤:
      1. 连接数据库,生成数据库连接对象
        conn = pymongo.MongoClient('localhost',27017)
      2. 选择要操作的数据库,生成数据库对象 (__setitem__)
        db = conn.stu
        db = conn['stu']
      3. 获取集合对象
        myset = db.class
        myset = db['class']
      4. 通过集合对象调用mongodb数据库操作函数
        增删改查,聚合,索引。。。。。
      5. 关闭数据库连接
        conn.close()

    --------------------------------------------------------------------------------------------------------------

    插入文档:
      myset.insert() 插入数据 功能同 mongoshell
      myset.insert_many() 插入多条
      myset.insert_one() 插入一条
      myset.save() 插入数据,通过_id可以修改

    ----------------------------------------------------------------------------------------------------------------

    查找操作:
      myset.find()
        功能 : 对数据库进行查找
        参数 : 同mongoshell find()
        返回值 : 返回游标对象 #返回是一个对象,因此可以进行for循环
      myset.find_one()        用法同mongoshell中 findOne()
        返回一个字典

    由于myset.find()返回的是一个对象,因此含有next(),limit(),skip(),count()这几个方法。

    但用着几个方法也是有限制的,如果之前用过了for循环的话,就不能在用这几个方法了

    ---------------------------------------------------------------------------------------------------------------------

    修改操作:
    update(query,update,upsert = False,multi = False)
    update_many()
    update_one()

    --------------------------------------------------------------------------------------------------------------------

    删除操作:
    remove(query,multi = True)
      功能: 删除文档
      参数: query 筛选条件

        multi 默认True表示删除所有符合条件的,False只删除一条

      还有一种删除的方法,删除一条或者多条
      db.collection.delete_one(),db.collection.delete_many(),里面的参数可remove一样

    ----------------------------------------------------------------------------------------------------------------------

    复合操作
      查找Role = 船长,并删除
      print(myset.find_one_and_delete({"Role":"船长"}))

     

    from pymongo import MongoClient
    
    #创建数据库连接对象
    conn = MongoClient("localhost", 27017)
    
    #创建数据库对象
    db = conn.stu
    #db = conn["stu"]
    
    #创建集合对象
    myset = db.class4
    
    #数据操作
    #print(dir(myset))    #查看对象方法
    
    #添加
    
    myset.insert({"name":"路飞","Role":"船长"})
    myset.insert([{"name":"山治","Role":"厨师"},{"name":"","Role":"船长"}])
    myset.insert_many([{"name":"娜美","Role":"掌舵手"},{"name":"大妈","Role":"四皇"}])
    myset.insert_one({"name":"香克斯","Role":"四皇"})
    myset.save({"_id":1,"name":"黑胡子","Role":"船长"})
    myset.save({"_id":1,"name":"白胡子","Role":"船长"})
    
    #查找
    
    cursor = myset.find({"Role":{"$eq":"四皇"}},{"_id":0})
    print(cursor)
    for i in cursor:
        print(i["name"],"----",i["Role"])
    
    dic = myset.find_one()
    print(dic)
    
    #获取下一条数据
    print(cursor.next())
    print(cursor.next())
    
    #显示第2条数据
    for i in cursor.skip(1).limit(1):
        print(i)
    
    #排序
    
    for i in cursor.sort([("name",-1)]):
        print(i)
    
    query={"$or":[{"sex":"w"},{"age":{"$lt":"18"}}]}
    cursor = myset.find(query ,{"_id":0})
    for i in cursor:
        print(i)
    
    #修改操作
    myset.update({"name":"zengsf"},{"$unset":{"sex":""}})
    #同时修改多条文档
    myset.update({"name":"zengsf"},{"$set":{"age":"21"}},multi = True)
    #如果匹配文档不存在则插入
    myset.update({"name":"骷髅"},{"$set":{"King":"武士"}},upsert = True)
    
    #删除
    myset.remove({"name":"黑胡子"})
    
    #复合操作
    #查找King = 船长,并删除
    print(myset.find_one_and_delete({"Role":"船长"}))
    
    #关闭连接
    conn.close()

    索引操作:
      ensure_index() 创建索引
      list_indexes() 查看索引
      drop_index() 删除一个索引
      drop_indexes() 删除所有索引

    #创建一个正向索引
    index = myset.ensure_index("name")
    #创建一个逆向索引
    index = myset.ensure_index([("age",-1)])
    print(index)
    
    #获取当前集合中的索引
    for i in myset.list_indexes():
        print(i)
    
    #删除所有索引
    myset.drop_indexes()
    
    #删除单个索引
    myset.drop_index("age_-1")
    
    #其它索引类型   
    #创建复合索引
    myset.ensure_index([("name",1),("age",1)])
    
    #创建唯一索引
    myset.ensure_index("name",name = "MyIndex",unique = True)
    
    #创建稀疏索引
    myset.ensure_index("age",sparse = True)

    --------------------------------------------------------------------------------------------------------------------

    聚合操作

      aggregate([])
        参数和mongoshell一样
        返回值和find()函数一样也是得到一个游标对象

  • 相关阅读:
    nginx设置开机自启
    sublimeText3和phpstrom使用
    快捷键整理
    nginx日志分割及备份
    nginx日志设置
    nginx上部署PHP
    C语言三种参数传递方式
    浮点数在内存中的存储方式
    windows下git安装过程
    偏移二进制编码和二进制补码的区别
  • 原文地址:https://www.cnblogs.com/zengsf/p/9690274.html
Copyright © 2020-2023  润新知