--- tags: AIOT馬拉松 --- # AIOT馬拉松D09 Python 存取 MongoDB 常用指令與程式 ### 作業 安裝 Anaconda,使用 pip 或是 conda 工具安裝 pymongo 套件。 使用 python 操作 mongo 資料庫,包含新增、刪除、修改、查詢。 ## 安裝pymongo套件 在Anaconda Navigator中apply pymongo套件 Not installed中搜尋pymomgo後apply ![](https://i.imgur.com/96uQnZ2.png) 安裝完成,Installed中已有pymongo ![](https://i.imgur.com/1o5y5vF.png) ## 使用 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查詢資料 ![](https://i.imgur.com/9WnkX6v.png) #### 修改資料 >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'} 資料已修改 ![](https://i.imgur.com/KjXzE8i.png) #### 資料排序 >doc = col.find().sort("name") >for x in doc: > print(x) 依"name"完成排序 ![](https://i.imgur.com/lYg61rM.png) #### 刪除資料 >query = { "name": "Taobao" } >col.delete_one(query) >for x in col.find(): > print(x) 資料已刪除 ![](https://i.imgur.com/AhGQQfb.png) ## 參考資料 #### Python MongoDB教學 https://www.w3schools.com/python/python_mongodb_getstarted.asp https://www.runoob.com/python3/python-mongodb.html