# 安裝
~~~
pip install pymongo
~~~
[教程][1]
# 使用
## 引入pymongo
~~~
from pymongo import MongoClient
~~~
## 創建連接
使用MongoClient創建一個連接
~~~
client = MongoClient()
~~~
如果你沒有特別為MongoClient指定參數,MongoClient將使用MongoDB默認參數即localhost接口和27017端口。
你可以使用一個完整的MongoDB URI來定義連接:
~~~
client = MongoClient("mongodb://mongodb0.example.net:27019")
~~~
這個MongoClient代表了一個運行于mongodb.example.net端口號為27019的MongoDB連接。
## 訪問數據庫對象
第一個你用pymongo來交互的基本類是Database,它代表了MongoDB中的數據庫(database)結構。數據庫保存了邏輯上相關的集合組。MongoDB將在第一次使用新的數據庫的時候自動創建它。
你可以使用屬性訪問的方式,賦值一個數據庫(例如名字為primer)給本地變量db,如下所示:
~~~
db = client.primer
~~~
你也可以使用字典形式訪問一個數據庫,這會移除Python特有的命名限制,如下所示:
~~~
db = client['primer']
~~~
## 訪問集合對象
第二個你將使用pymongo進行交互的基本類是Collection,它代表了MongoDB中的集合(collection)結構。集合(collection)保存了邏輯上相關的文檔組。
你可以直接使用字典形式訪問集合或者通過一個訪問一個數據庫對象的屬性來訪問集合,如下所示:
~~~
db.dataset
db['dataset']
~~~
你也可以給一個變量進行賦值,以在其他地方使用這個集合,如下所示:
~~~
coll = db.dataset
coll = db['dataset']
~~~
## 查詢
```
results = collection.find()
results = collection.find_one()
results = collection.find({'age': {'$gt': 20}})
```

另外,還可以進行正則匹配查詢。例如,查詢名字以M開頭的學生數據,示例如下:
~~~
results = collection.find({'name': {'$regex': '^M.*'}})
~~~
這里使用`$regex`來指定正則匹配,`^M.*`代表以M開頭的正則表達式。
這里將一些功能符號再歸類為下表。

## 對結果進行排序
要指定結果集的順序,可以通過追加`sort()`方法進行查詢。給`sort()`方法傳遞需要排序的字段和配需類型等。
~~~
pymongo.ASCENDING表示升序排序。
pymongo.DESCENDING表示降序排序。
~~~
如果要通過多個鍵星星排序,可以傳遞鍵的列表和以及對應的排序類型的列表。舉例來說,如下操作將返回restaurants集合中所有的文檔,并且先通過borough字段進行升序排序,然后在每個borough內,通過"address.zipcode"字段進行升序排序。
~~~
import pymongo
cursor = db.restaurants.find().sort([
("borough", pymongo.ASCENDING),
("address.zipcode", pymongo.ASCENDING)
])
~~~
> find返回的是可迭代對象
## 刪除
刪除操作比較簡單,直接調用`remove()`方法指定刪除的條件即可,此時符合條件的所有數據均會被刪除。示例如下:
~~~
result = collection.remove({'name': 'Kevin'})
print(result)
~~~
運行結果如下:
~~~
{'ok': 1, 'n': 1}
~~~
另外,這里依然存在兩個新的推薦方法——`delete_one()`和`delete_many()`。示例如下:
~~~
result = collection.delete_one({'name': 'Kevin'})
print(result)
print(result.deleted_count)
result = collection.delete_many({'age': {'$lt': 25}})
print(result.deleted_count)
~~~
## update
`update_one()`方法和`update_many()`方法,用法更加嚴格,它們的第二個參數需要使用`$`類型操作符作為字典的鍵名,示例如下:
~~~
condition = {'name': 'Kevin'}
student = collection.find_one(condition)
student['age'] = 26
result = collection.update_one(condition, {'$set': student})
print(result)
print(result.matched_count, result.modified_count)
~~~
### update_one
```
condition = {'age': {'$gt': 20}}
result = collection.update_one(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count)
```
### update_many
~~~
col.update({"_id": {"$gt": 10}}, {"$set": {"content": "aaaaaaa"}}, multi=True)
對應 db.bar.update({"_id": {"$gt": 10}}, {"$set": {"content": "xxx"}}, false,true)
~~~
## 問題
~~~
ubuntu14.04 解決安裝pymongo報錯 ImportError: cannot import name MongoClient
apt-get install python-pymongo
~~~
[1]:https://www.cnblogs.com/zhouxuchen/p/5544227.html
- 前言
- 環境搭建
- pypi
- 打包
- Python 2 和 Python 3 的版本之間差別
- 項目
- 第一部分
- 第1章 基礎
- Python安裝
- python代碼文件類型
- python對象
- 核心數據類型
- 核心數據類型--整型和浮點型
- 核心數據類型--字符串
- str.format
- 核心數據類型--列表
- 核心數據類型--元組
- 核心數據類型--字典
- 核心數據類型--集合
- 核心數據類型--文件對象
- 調用bash
- 標準輸入輸出
- str-repr
- 字符編碼
- 迭代器和生成器
- 第2章 語句和語法
- 賦值語句
- if語句
- while語句
- for語句
- assert
- 第3章 函數
- 函數作用域
- 工廠函數
- 內置函數
- 遞歸
- 嵌套作用域和lambda
- 參數傳遞
- 函數式編程
- property可寫與可讀
- 第5章 模塊
- 模塊導入
- 模塊命名空間
- 相對導入和絕對導入
- 模塊重載
- 在模塊中隱藏數據
- 過渡性重載
- 第6章 類
- 面向對象還是面向過程?
- 構造函數 析構函數
- call
- 運算符重載
- str()
- 待定
- 即時生成屬性
- 多態
- 線程和進程
- thread模塊
- threading模塊
- threading線程鎖
- 糖果機
- multiprocessing
- 阻塞非阻塞同步異步
- 單線程和多線程對比
- 生產者消費者模型
- 第二部分
- 獲取系統資源信息
- 獲取進程所占的物理內存
- dmidecode獲取系統信息
- 網絡編程
- 網絡基礎
- python中的套接字
- socket模塊
- 第三部分 高級功能
- 閉包入門
- 閉包的應用
- 裝飾器入門
- 裝飾器應用
- 第四部分 項目實戰
- graphite
- 模塊
- collections
- datetime
- Enum
- faker
- fabric
- fileinput
- fire
- fnmatch
- getpass
- glob
- hashlib
- heapq
- json模塊
- log
- os
- Paramiko
- parser
- platform
- pyyaml
- Queue
- random
- re
- 特殊符號和字符
- re模塊
- shelves
- subprocess
- time
- urllib_urllib2_requests
- urllib urllib2
- requests
- 標準模塊ConfigParser
- 擴展模塊Mysqldb
- 擴展模塊dns
- 擴展模塊request
- uuid
- cacheout 緩存庫
- delorean 時間
- 附錄
- 內置函數
- python實現各種排序算法
- 常見報錯
- pymongo
- pyrocksdb
- 常用
- ERROR