---
tags: AIOT馬拉松
---
# AIOT馬拉松D09 Python 存取 MongoDB 常用指令與程式
### 作業
安裝 Anaconda,使用 pip 或是 conda 工具安裝 pymongo 套件。
使用 python 操作 mongo 資料庫,包含新增、刪除、修改、查詢。
## 安裝pymongo套件
在Anaconda Navigator中apply pymongo套件
Not installed中搜尋pymomgo後apply

安裝完成,Installed中已有pymongo

## 使用 python 操作 mongo 資料庫
>from pymongo import MongoClient
#### 建立dataset
>client = MongoClient(host='127.0.0.1',port=27017)
>db = client["testdb"]
>col = db["name"]
#### insert第一筆資料
>mydict = { "name": "Sara", "gender": "female", "country": "kaohsiung" }
>x = col.insert_one(mydict)
>print(x)
輸出
<pymongo.results.InsertOneResult object at 0x00000162B6D98848>
#### 查詢是否完成輸入
>y = col.find_one()
print(y)
輸出
{'_id': ObjectId('5ff51c07b94f464b9ef8a40e'), 'name': 'Sara', 'gender': 'female', 'country': 'kaohsiung'}
#### insert多筆資料
>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 = col.insert_many(mylist)
>print(x.inserted_ids)
输出插入的所有文档对应的 _id 值
[ObjectId('5ff56cc2b94f464b9ef8a410'), ObjectId('5ff56cc2b94f464b9ef8a411'), ObjectId('5ff56cc2b94f464b9ef8a412'), ObjectId('5ff56cc2b94f464b9ef8a413'), ObjectId('5ff56cc2b94f464b9ef8a414')]
#### 查詢所有資料
>for x in col.find():
> print(x)
輸出
{'_id': ObjectId('5ff51c07b94f464b9ef8a40e'), 'name': 'Sara', 'gender': 'female', 'country': 'kaohsiung'}
{'_id': ObjectId('5ff56cc2b94f464b9ef8a410'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5ff56cc2b94f464b9ef8a411'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5ff56cc2b94f464b9ef8a412'), 'name': 'Facebook', 'alexa': '10', 'url': 'https://www.facebook.com'}
{'_id': ObjectId('5ff56cc2b94f464b9ef8a413'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}
{'_id': ObjectId('5ff56cc2b94f464b9ef8a414'), 'name': 'Github', 'alexa': '109', 'url': 'https://www.github.com'}
用Robo 3T查詢資料

#### 修改資料
>myquery = { "alexa": "100" }
>newvalues = { "$set": { "alexa": "123" } }
>col.update_one(myquery, newvalues)
输出修改后的 "sites" 集合
>for x in col.find():
> print(x)
輸出
{'_id': ObjectId('5ff51c07b94f464b9ef8a40e'), 'name': 'Sara', 'gender': 'female', 'country': 'kaohsiung'}
{'_id': ObjectId('5ff56cc2b94f464b9ef8a410'), 'name': 'Taobao', 'alexa': '123', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5ff56cc2b94f464b9ef8a411'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5ff56cc2b94f464b9ef8a412'), 'name': 'Facebook', 'alexa': '10', 'url': 'https://www.facebook.com'}
{'_id': ObjectId('5ff56cc2b94f464b9ef8a413'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}
{'_id': ObjectId('5ff56cc2b94f464b9ef8a414'), 'name': 'Github', 'alexa': '109', 'url': 'https://www.github.com'}
資料已修改

#### 資料排序
>doc = col.find().sort("name")
>for x in doc:
> print(x)
依"name"完成排序

#### 刪除資料
>query = { "name": "Taobao" }
>col.delete_one(query)
>for x in col.find():
> print(x)
資料已刪除

## 參考資料
#### Python MongoDB教學
https://www.w3schools.com/python/python_mongodb_getstarted.asp
https://www.runoob.com/python3/python-mongodb.html