Python Mongodb 文档

2021-07-12  本文已影响0人  逍遥_yjz

mongodb
MongoDB的数据库和集合能够自动创建

pip install pymongo
#!/usr/bin/python3

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["runoobdb"]

dblist = myclient.list_database_names()
# dblist = myclient.database_names()
print('开始')
if "runoobdb" in dblist:
  print("数据库已存在!")

mycol = mydb["sites"]

mydict = {"name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com"}

# 插入数据
def insertData():
    x = mycol.insert_one(mydict)

    # 插入多个文档
    mylist = [
        {"name": "Taobao", "alexa": "100", "url": "https://www.taobao.com"},
        {"name": "QQ", "alexa": "101", "url": "https://www.qq.com"},
        {"name": "Facebook", "alexa": "10", "url": "https://www.facebook.com"},
        {"name": "知乎", "alexa": "103", "url": "https://www.zhihu.com"},
        {"name": "Github", "alexa": "109", "url": "https://www.github.com"}
    ]

    x = mycol.insert_many(mylist)

    # 输出插入的所有文档对应的 _id 值
    print(x.inserted_ids)

# 修改数据
'''
在 MongoDB 中使用 update_one() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。

如果查找到的匹配数据多于一条,则只会修改第一条。
'''

def updateData():
    myquery = {"alexa": "10000"}
    newvalues = {"$set": {"alexa": "12345"}}

    mycol.update_one(myquery, newvalues)

    # 输出修改后的  "sites"  集合
    for x in mycol.find():
        print(x)


'''
如果要修改所有匹配到的记录,可以使用 update_many()。
'''
def updateManyData():
    myquery = {"name": {"$regex": "^F"}}
    newvalues = {"$set": {"alexa": "123"}}

    x = mycol.update_many(myquery, newvalues)

    print(x.modified_count, "文档已修改")

'''
sort() 方法可以指定升序或降序排序。

sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。
'''
def sortData():
    mydoc = mycol.find().sort("alexa")
    for x in mydoc:
        print(x)
    print('==========')
    mydoc = mycol.find().sort("alexa", -1)

    for x in mydoc:
        print(x)

'''删除文档'''
def deleteData():
    myquery = {"name": "Taobao"}

    mycol.delete_one(myquery)

    # 删除后输出
    for x in mycol.find():
        print(x)

    print('=========删除多个文档===============')
    myquery = {"name": {"$regex": "^F"}}

    x = mycol.delete_many(myquery)

    print(x.deleted_count, "个文档已删除")

    print('========删除集合中的所有文档========')
    x = mycol.delete_many({})

    print(x.deleted_count, "个文档已删除")

    print('========删除集合========')
    # 如果删除成功 drop() 返回 true,如果删除失败(集合不存在)则返回 false。
    mycol.drop()

if __name__ == '__main__':
    #updateData()

    #updateManyData()

    #sortData()

    deleteData()
上一篇 下一篇

猜你喜欢

热点阅读