<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # PyMongo 教程 > 原文: [http://zetcode.com/python/pymongo/](http://zetcode.com/python/pymongo/) PyMongo 教程展示了如何使用 Python 編程 MongoDB。 在作者的 Github [倉庫](https://github.com/janbodnar/pymongo-examples/tree/master)中提供了代碼示例。 MongoDB 是 NoSQL 跨平臺的面向文檔的數據庫。 它是可用的最受歡迎的數據庫之一。 MongoDB 由 MongoDB Inc. 開發,并作為免費和開源軟件發布。 MongoDB 中的記錄是一個文檔,它是由字段和值對組成的數據結構。 MongoDB 文檔與 JSON 對象相似。 字段的值可以包括其他文檔,數組和文檔數組。 MongoDB 將文檔存儲在集合中。 集合類似于關系數據庫中的表以及行中的文檔。 游標是對查詢結果集的引用。 客戶可以遍歷游標以檢索結果。 默認情況下,游標閑置十分鐘后會超時。 ## PyMongo PyMongo 是一個 Python 模塊,用于在 Python 中使用 MongoDB。 ## 安裝 PyMongo 以下命令用于安裝 PyMongo。 ```py $ sudo pip install pymongo ``` 我們用`pip`安裝 PyMongo。 ## 創建一個 MongoDB 數據庫 `mongo`工具是 MongoDB 的交互式 JavaScript Shell 界面,它為系統管理員提供了一個界面,并為開發者提供了一種直接測試數據庫查詢和操作的方法。 ```py $ mongo testdb MongoDB shell version: 2.6.10 connecting to: testdb > show dbs admin (empty) local 0.078GB test 0.078GB testdb 0.078GB ``` 我們創建一個`testdb`數據庫。 ## PyMongo 創建集合 在第一個示例中,我們創建一個新集合。 MongoDB 將文檔存儲在集合中。 集合類似于關系數據庫中的表。 `create_collection.py` ```py #!/usr/bin/python3 from pymongo import MongoClient cars = [ {'name': 'Audi', 'price': 52642}, {'name': 'Mercedes', 'price': 57127}, {'name': 'Skoda', 'price': 9000}, {'name': 'Volvo', 'price': 29000}, {'name': 'Bentley', 'price': 350000}, {'name': 'Citroen', 'price': 21000}, {'name': 'Hummer', 'price': 41400}, {'name': 'Volkswagen', 'price': 21600} ] client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb db.cars.insert_many(cars) ``` 該示例創建一個新的`cars`集合。 它包含八個文檔。 ```py cars = [ {'name': 'Audi', 'price': 52642}, {'name': 'Mercedes', 'price': 57127}, {'name': 'Skoda', 'price': 9000}, {'name': 'Volvo', 'price': 29000}, {'name': 'Bentley', 'price': 350000}, {'name': 'Citroen', 'price': 21000}, {'name': 'Hummer', 'price': 41400}, {'name': 'Volkswagen', 'price': 21600} ] ``` 該 Python 字典存儲了八個要插入到 MongoDB 集合中的記錄。 ```py client = MongoClient('mongodb://localhost:27017/') ``` `MongoClient`用于與 MongoDB 通信。 我們傳遞`MongoClient`主機名和端口號。 ```py db = client.testdb ``` 我們獲得了對`testdb`數據庫的引用。 ```py db.cars.insert_many(cars) ``` 使用`insert_many()`方法,我們將八個文檔插入到`cars`集合中,該集合也會自動創建。 ```py > db.cars.find() { "_id" : ObjectId("5b41eb21b9c5d915989d48a8"), "price" : 52642, "name" : "Audi" } { "_id" : ObjectId("5b41eb21b9c5d915989d48a9"), "price" : 57127, "name" : "Mercedes" } { "_id" : ObjectId("5b41eb21b9c5d915989d48aa"), "price" : 9000, "name" : "Skoda" } { "_id" : ObjectId("5b41eb21b9c5d915989d48ab"), "price" : 29000, "name" : "Volvo" } { "_id" : ObjectId("5b41eb21b9c5d915989d48ac"), "price" : 350000, "name" : "Bentley" } { "_id" : ObjectId("5b41eb21b9c5d915989d48ad"), "price" : 21000, "name" : "Citroen" } { "_id" : ObjectId("5b41eb21b9c5d915989d48ae"), "price" : 41400, "name" : "Hummer" } { "_id" : ObjectId("5b41eb21b9c5d915989d48af"), "price" : 21600, "name" : "Volkswagen" } ``` 我們使用`mongo`工具驗證數據。 ## PyMongo 列出集合 使用`collection_names()`,我們獲得數據庫中可用列表的列表。 `list_collections.py` ```py #!/usr/bin/python3 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb print(db.collection_names()) ``` 該示例在`testdb`數據庫中打印集合。 ## PyMongo 刪除集合 `drop()`方法從數據庫中刪除一個集合。 `drop_collection.py` ```py #!/usr/bin/python3 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb db.cars.drop() ``` 該示例從`testdb`數據庫中刪除`cars`集合。 ## PyMongo 運行命令 我們可以使用`command()`向 MongoDB 發出命令。 `serverStatus`命令返回 MongoDB 服務器的狀態。 `server_status.py` ```py #!/usr/bin/python3 from pymongo import MongoClient from pprint import pprint client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb status = db.command("serverStatus") pprint(status) ``` 該示例顯示冗長的服務器狀態。 `dbstats`命令返回反映單個數據庫使用狀態的統計信息。 `db_stats.py` ```py #!/usr/bin/python3 from pymongo import MongoClient from pprint import pprint client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb print(db.collection_names()) status = db.command("dbstats") pprint(status) ``` 該示例打印`testdb`的數據庫統計信息。 ## PyMongo 游標 `find`方法返回一個 PyMongo 游標,該游標是對查詢結果集的引用。 `cursor.py` ```py #!/usr/bin/python3 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb cars = db.cars.find() print(cars.next()) print(cars.next()) print(cars.next()) cars.rewind() print(cars.next()) print(cars.next()) print(cars.next()) print(list(cars)) ``` 在示例中,我們使用游標。 ```py cars = db.cars.find() ``` `find()`方法返回一個 PyMongo 游標。 ```py print(cars.next()) ``` 使用`next()`方法,我們從結果集中獲取下一個文檔。 ```py cars.rewind() ``` `rewind()`方法將游標倒回其未求值狀態。 ```py print(list(cars)) ``` 使用`list()`方法,我們可以將游標轉換為 Python 列表。 它將所有數據加載到內存中。 ## PyMongo 讀取所有數據 在下面的示例中,我們從集合中讀取所有記錄。 我們使用 Python `for`循環遍歷返回的游標。 `all_cars.py` ```py #!/usr/bin/python3 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb cars = db.cars.find() for car in cars: print('{0} {1}'.format(car['name'], car['price'])) ``` 該示例從集合中打印所有汽車名稱及其價格。 ```py cars = db.cars.find() ``` `find()`方法選擇集合或視圖中的文檔,然后將游標返回到所選文檔。 游標是對查詢結果集的引用。 ```py for car in cars: print('{0} {1}'.format(car['name'], car['price'])) ``` 使用 Python for 循環,我們遍歷結果集。 ```py $ ./all_cars.py Audi 52642 Mercedes 57127 Skoda 9000 Volvo 29000 Bentley 350000 Citroen 21000 Hummer 41400 Volkswagen 21600 ``` 這是輸出。 ## PyMongo 計數文件 使用`count()`方法檢索文檔數量。 `count_cars.py` ```py #!/usr/bin/python3 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb n_cars = db.cars.find().count() print("There are {} cars".format(n_cars)) ``` 該示例使用`count()`計算集合中的汽車數量。 ```py $ ./count_cars.py There are 8 cars ``` 集合中有八輛車。 ## PyMongo 過濾器 `find()`和`find_one()`的第一個參數是一個過濾器。 過濾器是所有文檔必須匹配的條件。 `filtering.py` ```py #!/usr/bin/python3 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb expensive_cars = db.cars.find({'price': {'$gt': 50000}}) for ecar in expensive_cars: print(ecar['name']) ``` 該示例打印價格大于 50000 的汽車的名稱。 ```py expensive_cars = db.cars.find({'price': {'$gt': 50000}}) ``` `find()`方法的第一個參數是所有返回的記錄必須匹配的過濾器。 過濾器使用`$gt`運算符僅返回昂貴的汽車。 ```py $ ./filtering.py Audi Mercedes Bentley ``` 這是輸出。 ## PyMongo 投影 通過投影,我們可以從返回的文檔中選擇特定字段。 投影在`find()`方法的第二個參數中傳遞。 `projection.py` ```py #!/usr/bin/python3 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb cars = db.cars.find({}, {'_id': 1, 'name':1}) for car in cars: print(car) ``` 該示例打印文檔的`_id`和`name`字段。 ```py cars = db.cars.find({}, {'_id': 1, 'name':1}) ``` 我們可以指定包含或排除投影,但不能同時指定。 ```py $ ./projection.py {'name': 'Audi', '_id': ObjectId('5b41eb21b9c5d915989d48a8')} {'name': 'Mercedes', '_id': ObjectId('5b41eb21b9c5d915989d48a9')} {'name': 'Skoda', '_id': ObjectId('5b41eb21b9c5d915989d48aa')} {'name': 'Volvo', '_id': ObjectId('5b41eb21b9c5d915989d48ab')} {'name': 'Bentley', '_id': ObjectId('5b41eb21b9c5d915989d48ac')} {'name': 'Citroen', '_id': ObjectId('5b41eb21b9c5d915989d48ad')} {'name': 'Hummer', '_id': ObjectId('5b41eb21b9c5d915989d48ae')} {'name': 'Volkswagen', '_id': ObjectId('5b41eb21b9c5d915989d48af')} ``` 這是輸出。 ## PyMongo 排序文件 我們可以使用`sort()`對文檔進行排序。 `sorting.py` ```py #!/usr/bin/python3 from pymongo import MongoClient, DESCENDING client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb cars = db.cars.find().sort("price", DESCENDING) for car in cars: print('{0} {1}'.format(car['name'], car['price'])) ``` 該示例按價格降序對記錄進行排序。 ```py $ ./sorting.py Bentley 350000 Mercedes 57127 Audi 52642 Hummer 41400 Volvo 29000 Volkswagen 21600 Citroen 21000 Skoda 9000 ``` 這是輸出。 ## PyMongo 聚合 聚合計算集合中數據的聚合值。 `aggregate_sum.py` ```py #!/usr/bin/python3 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb agr = [ {'$group': {'_id': 1, 'all': { '$sum': '$price' } } } ] val = list(db.cars.aggregate(agr)) print('The sum of prices is {}'.format(val[0]['all'])) ``` 該示例計算所有汽車價格的總和。 ```py agr = [ {'$group': {'_id': 1, 'all': { '$sum': '$price' } } } ] ``` `$sum`運算符計算并返回數值的總和。 `$group`運算符通過指定的標識符表達式對輸入文檔進行分組,并將累加器表達式(如果指定)應用于每個組。 ```py val = list(db.cars.aggregate(agr)) ``` `aggregate()`方法將聚合操作應用于`cars`集合。 ```py $ ./aggregate_sum.py The sum of prices is 581769 ``` 所有值的總和是 581769。 我們可以使用`$match`運算符來選擇要匯總的特定汽車。 `sum_two_cars.py` ```py #!/usr/bin/python3 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb agr = [{ '$match': {'$or': [ { 'name': "Audi" }, { 'name': "Volvo" }] }}, { '$group': {'_id': 1, 'sum2cars': { '$sum': "$price" } }}] val = list(db.cars.aggregate(agr)) print('The sum of prices of two cars is {}'.format(val[0]['sum2cars'])) ``` 該示例計算奧迪和沃爾沃汽車的價格總和。 ```py agr = [{ '$match': {'$or': [ { 'name': "Audi" }, { 'name': "Volvo" }] }}, { '$group': {'_id': 1, 'sum2cars': { '$sum': "$price" } }}] ``` 該表達式使用`$match`,`$or`,`$group`和`$sum`運算符執行任務。 ```py $ ./sum_two_cars.py The sum of prices of two cars is 81642 ``` 兩輛車的總價是 81642。 ## PyMongo 限制數據輸出 `limit`查詢選項指定要返回的文檔數量,`skip()`選項指定某些文檔。 `MongoSkipLimit.java` ```py #!/usr/bin/python3 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') with client: db = client.testdb cars = db.cars.find().skip(2).limit(3) for car in cars: print('{0}: {1}'.format(car['name'], car['price'])) ``` 該示例從`cars`集合中讀取,跳過了前兩個文檔,并將輸出限制為三個文檔。 ```py cars = db.cars.find().skip(2).limit(3) ``` `skip()`方法跳過前兩個文檔,`limit()`方法將輸出限制為三個文檔。 ```py $ ./limit_documents.py Skoda: 9000 Volvo: 29000 Bentley: 350000 ``` 這是示例的輸出。 在 PyMongo 教程中,我們使用了 MongoDB 和 Python。 您可能還會對以下教程感興趣: [PyMySQL 教程](/python/pymysql/), [pyDAL 教程](/python/pydal/), [Peewee 教程](/python/peewee/), [SQLite Python 教程](/db/sqlitepythontutorial/), [OpenPyXL 教程](/articles/openpyxl/),[Bottle 教程](/python/bottle/), [Python CSV 教程](/python/csv/)或 [Python 教程](/lang/python/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看