欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    ongoDB超全語法大全

    python 模塊pymongo模塊,連接MongoDB數據庫
    python模塊之 Motor 異步pymongo

    1. 官網下載

    MongoDB:https://www.mongodb.com/try/download/community

    MongoDB shell腳本:https://www.mongodb.com/try/download/shell,下載后解壓到MongoDB安裝目錄

    1. 創建數據庫文件的存放位置
    • 在data文件夾下創建 db 文件夾(啟動 MongoDB 服務之前需要必須創建數據庫文件的存放文件夾,否則命令不會自動創建,而且不能啟動成功)
    • 在data文件夾下創建 log文件夾
    • log文件夾下創建mongo.log
    1. 配置環境變量
    • 系統變量新建MongoDB_HOME變量,值為解壓路徑

    • 系統變量編輯path新建%MongoDB_HOME%\bin
    • 系統變量編輯path新建%MongoDB_HOME%\mongosh-1.9.0-win32-x64\bin

    • 打開cmd分別運行mongod 、mongosh命令運行成功,則環境變量配置成功
    1. 運行命令工具,進入db文件夾,輸入:mongod --dbpath "D:\MongoDB\data\db",打開瀏覽器輸入:http://localhost:27017,,頁面正常,MongoDB 安裝成功

    參數

    說明

    --quiet

    # 安靜輸出

    --port arg

    # 指定服務端口號,默認端口27017

    --bind_ip arg

    # 綁定服務IP,若綁定127.0.0.1,則只能本機訪問,不指定默認本地所有IP

    --logpath arg

    # 指定MongoDB日志文件,注意是指定文件不是目錄

    --logappend

    # 使用追加的方式寫日志

    --pidfilepath arg

    # PID File 的完整路徑,如果沒有設置,則沒有PID文件

    --keyFile arg

    # 集群的私鑰的完整路徑,只對于Replica Set 架構有效

    --unixSocketPrefix arg

    # UNIX域套接字替代目錄,(默認為 /tmp)

    --fork

    # 以守護進程的方式運行MongoDB,創建服務器進程

    --auth

    # 啟用驗證

    --cpu

    # 定期顯示CPU的CPU利用率和iowait

    --dbpath arg

    # 指定數據庫路徑

    --diaglog arg

    # diaglog選項 0=off 1=W 2=R 3=both 7=W+some reads

    --directoryperdb

    # 設置每個數據庫將被保存在一個單獨的目錄

    --journal

    # 啟用日志選項,MongoDB的數據操作將會寫入到journal文件夾的文件里

    --journalOptions arg

    # 啟用日志診斷選項

    --ipv6

    # 啟用IPv6選項

    --jsonp

    # 允許JSONP形式通過HTTP訪問(有安全影響)

    --maxConns arg

    # 最大同時連接數 默認2000

    --noauth

    # 不啟用驗證

    --nohttpinterface

    # 關閉http接口,默認關閉27018端口訪問

    --noprealloc

    # 禁用數據文件預分配(往往影響性能)

    --noscripting

    # 禁用腳本引擎

    --notablescan

    # 不允許表掃描

    --nounixsocket

    # 禁用Unix套接字監聽

    --nssize arg (=16)

    # 設置信數據庫.ns文件大小(MB)

    --objcheck

    # 在收到客戶數據,檢查的有效性,

    --profile arg

    # 檔案參數 0=off 1=slow, 2=all

    --quota

    # 限制每個數據庫的文件數,設置默認為8

    --quotaFiles arg

    # number of files allower per db, requires --quota

    --rest

    # 開啟簡單的rest API

    --repair

    # 修復所有數據庫run repair on all dbs

    --repairpath arg

    # 修復庫生成的文件的目錄,默認為目錄名稱dbpath

    --slowms arg (=100)

    # value of slow for profile and console log

    --smallfiles

    # 使用較小的默認文件

    --syncdelay arg (=60)

    # 數據寫入磁盤的時間秒數(0=never,不推薦)

    --sysinfo

    # 打印一些診斷系統信息

    --upgrade

    # 如果需要升級數據庫

    1. 根目錄新建配置文件,mongo.config

    #數據庫數據存放目錄 dbpath=D:\MongoDB\data\db #數據庫日志存放目錄 logpath=D:\MongoDB\data\log\mongo.log #以追加的方式記錄日志 logappend = true #端口號 默認為 27017 port=27017 #開啟用戶認證 auth=false #mongodb所綁定的ip地址,綁定后只能通過127訪問 bind_ip = 0.0.0.0 #啟用日志,默認啟用 journal=true #過濾掉一些無用的日志信息,若需要調試使用請設置為false quiet=true #不允許全表掃描 notablescan=false

    1. 運行命令工具,進入data/db文件夾,輸入:mongod --config D:\mongoDB\mongo.config -install -serviceName MongoDB
    2. 運行:net start MongoDB啟動服務、net stop MongoDB 關閉服務
    3. 服務運行后,打開瀏覽器輸入:http://localhost:27017,頁面正常打開為運行成功

    我們在上一文中,介紹了關系型數據庫的相關使用,本文接著來介紹另一重要的數據庫類型,非關系型數據庫NoSQL)。NoSQL 是基于鍵值對的存儲方式,不需要經過 SQL 層的解析,數據之間也沒有耦合性,因此其性能非常高。常見的非關系型數據庫有 MongoDB,Neo4JHBase,Redis 等,本文使用常用的 MongoDB 來講解非關系型數據庫的使用。

    MongoDB 是由 C++編寫而成,是一個基于分布式文件存儲的開源數據庫系統,其存儲形式類似于 json 對象,因此在使用時非常靈活,被廣泛使用。

    MongoDB圖標

    初始工作

    Python 使用 MongoDB 數據庫需要第三方庫來支持,因此需要先安裝 pymongo 庫。

    pip install pymongo

    快速上手

    import pymongo
    # 建立連接
    client = pymongo.MongoClient(host="localhost", port=27017)
    
    # 引用數據庫名稱,這里假設要創建名為mydatabase的數據庫
    db = client['mydatabase']
    
    # 要驗證數據庫是否已存在,可以列出所有數據庫名稱
    print(client.list_database_names())
    
    # 若要進一步操作,比如創建集合并插入數據
    collection_name = 'mycollection'
    data = {'name': 'example document'}
    # 新增數據
    db[collection_name].insert_one(data)

    開始使用

    非關系型數據庫關系型數據庫在概念上存在一定差異,如下表:

    MongoDB與關系型數據庫對照

    指定使用的數據庫(database)

    一般在應用中會存在多個數據庫,并且在操作數據的時候需要指定是哪個具體的數據庫,如下:

    # 下方client為建立連接后的client對象
    
    # 使用屬性的方式
    db = client['mydatabase']
    # 使用點模式
    db = client.mydatabase

    這里我們選擇了“mydatabase”這個數據庫,需要注意的是,如果這個數據庫不存在,后續在執行數據插入的時候會自動創建該庫(非常給力的一個功能)。

    指定集合

    在 MongoDB 的一個數據庫中,可以包含多個 collection(集合, 可以類比為 MySQL 中的表),因此在操作數據的時候還需要指定集合。我們只需要使用上邊獲取的數據并使用屬性就可以獲取到指定集合。

    # 下邊db指獲取到的庫
    # 屬性獲取
    collection = db['mycollection']
    # 點模式獲取
    collection = db.mycollection

    新增數據

    在獲取到數據后就可以使用 insert* 方法來新增數據了。

    collection.insert_one(
        {'name': 'example document', 
         'age': 18, 
         'address': 'beijing', 
         'phone': '1234567890'})

    新增的數據

    如上圖所示使用 insert_one 方法新增一條數據。

    還可以使用 insert_many 來同時新增多條數據

    collection.insert_many(
        [{'name': 'example1', 'age': 18, 'address': 'beijing'}
          ,{'name': 'example2', 'age': 18, 'address': 'beijing'}])

    從上邊運行結果可以看出, MongoDB 在新增數據時,只需要新增即可,數據庫會自動設置一個 _id 屬性來表示主鍵。此 _id 值由 MongoDB 來維護。并且新增成功后,方法會返回一個InsertOneResult 對象,其中包含了數據 _id 值,需要注意的是,這里的_id是ObjectId對象。

    數據查詢

    數據存入后,最重要的就是要根據合適的條件取出來,此時可以使用 find*方法來獲取已經存入的數據,當然,pymongo 中提供了更多的方法來支持這些功能,如下。

    find可用的方法

    find_one 查找一條結果

    # 獲取一條數據,其中name為"example document"
    res = collection.find_one({"name": "example document"})
    print(res)
    # {'_id': ObjectId('65a8c06271f39c34e5e98579'), 'name': 'example document'}
    print(type(res))
    # <class 'dict'>

    如上述代碼中,我們使用 find_one 查找一條 name "example document"的內容,并返回一個 dict,如果沒有匹配的條件則返回 None。

    需要特別注意的是,如果使用數據主鍵 _id 查詢,需要使用 ObjectId 構建 id 值,直接使用字符串查找會無法查詢到結果。

    # 需要使用ObjectId構建id
    res = collection.find_one({"_id": ObjectId("65a8c06271f39c34e5e98579")})

    find 查找多條

    res = collection.find({'name': 'example document'})
    
    print(res)
    
    for row in res:
        print(row)
    
    # <pymongo.cursor.Cursor object at 0x000001DCE4578E90>
    # {'_id': ObjectId('65a8c06271f39c34e5e98579'), 'name': 'example document'}
    # {'_id': ObjectId('65a8c098a6c8916e18ee8e80'), 'name': 'example document'}

    使用 find 方法將會查找出所有符合條件的數據,并封裝到了 Cursor 對象中,因此需要遍歷當前對象才可以獲取到每條數據。MongoDB提供了非常豐富的條件查詢,以下是一些常用示例:

    MongoDB 條件查找

    res = collection.find({'age': {'$gt': 20}})

    如上代碼中, 查找 age 大于 20 的數據,需要注意的是,條件是一個對象的結構。

    其他操作

    計數

    早先的版本中可以使用 find 返回的結果使用 count 方法來計數, 但是這個方法在后續版本中被廢棄了, 現在需要使用 count_documents 來統計條件下的查詢的數量。

    count = collection.count_documents({})
    print("count:", count) #10

    排序

    與關系型數據庫相似的, MongoDB 也支持排序,find 結果后調用 sort,并指定排序方式即可完成結果排序

    # ASCENDING = 1
    # """Ascending sort order."""
    # DESCENDING = -1
    # """Descending sort order."""
    
    res = collection.find()
    rows = res.sort("name", pymongo.ASCENDING)

    排序參數可以使用pymongo 中定義的常量,也可以直接賦值 1 或-1

    偏移

    熟悉后臺開發的一定使用過分頁, 在 MongoDB 中也支持這樣的操作, 但是需要搭配 skip 和 limit 兩個方法來完成

    res = collection.find()
    row = res.skip(2).limit(2)

    如上所示,使用 skip 跳過前兩條, 使用 limit 方法獲取結果中的 2 條數據, 結果中最終會返回第 3,4 條數據。不過需要注意的是,這樣的查找在數據量較大的情況下需要慎用,可能會導致內存不足,一般的解決方式是記錄上一次查詢最后一條數據的 id,然后查找此大于此 id 值的,再進行 limit 限制。

    更新數據

    更新數據時,需要使用 update 方法來完成。

    collection.update_one({'name': 'example document'}, 
                          {"$set": {"name": "測試數據", "age": 30}})

    如上述代碼中,update_one 接受兩個參數, 第一個參數為查詢條件, 第二個參數為需要設置的內容。

    在上方數據查詢中有find_one_and_update 方法也可以在完成更新的操作

    clt.find_one_and_update({'name': 'example document'}, 
                            {"$set": {"name": "測試數據2", "age": 30}})

    兩者執行本質是一樣的,都是先查詢,后更新

    刪除數據

    刪除數據時,需要使用 delete_one 方法來完成,返回DeleteResult 結果中包含了操作成功的條數,如果操作不成功則返回 None。

    res = clt.delete_one({'name': 'example1'})
    
    # DeleteResult({'n': 1, 'ok': 1.0}, acknowledged=True)

    在上方數據查詢中有find_one_and_delete 方法也可以完成刪除操作, 不過該方法不返回任何結果

    clt.find_one_and_delete({'name': 'example2'})

    #我來嘮家常#

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有