mongodb和pymongo建立資料庫和基礎操作
1. MongoDB
下載地址:https://www.mongodb.com/download-center#community
MongoDB是一種介於關係型和非關係型中間的資料庫。它是文件型資料庫(一個文件包含多個鍵/值對),多個文件組成集合,多個集合組成資料庫。一個MongoDB 例項可以承載多個數據庫。這裡集合的概念類似關係型資料庫中的表。MongoDB的優勢在於資料儲存與互動非常靈活,採用類似JSON格式,能靈活地建立索引以及完成SQL能做的幾乎所有查詢。此外它還是一個支援分散式的資料庫,能自動處理分片實現負載均衡,並且支援使用MapReduce進行復雜的聚合操作。
安裝完MongoDB之後我們需要建立一個資料夾存放資料庫
MongoDB將資料目錄儲存在 db 目錄下。但是這個資料目錄不會主動建立。
開啟cmd -> cd c:\data -> mkdir db 然後在建立log資料夾 mkdir log
然後可以啟動MongoDB
cd C:\Program Files\MongoDB\Server\3.4\bin
mongod -dbpath C:\data\db
連結成功後新開一個cmd視窗,切換到bin目錄下,鍵入mongo開啟一個客戶端
常用操作:
(1)檢視所有資料庫: show dbs
(2)建立資料庫:use dbname (如果資料庫不存在,則建立資料庫,否則切換到指定資料庫)
(3)插入資料:db.collection.insert({key:value})
(4)更新資料:db.collection.save({key:value}) 如果是已經存在的key則更新value,否則執行插入,insert對已經存在的不做操作
db.collection.update({key_name : key},{value_name : value})
(5)刪除:db.collection.remove()刪除所有資料,db.collection.remove({key:value})刪除指定資料,db.collection.drop()刪除這個collection
(6)查詢:db.collection.find({key:value}).pretty()返回所有,並且展示地好看點,db.collection.findOne()返回第一條, find裡可以多個key查詢,find({key1: value1, key2: value2})
其他常見操作: http://www.runoob.com/mongodb/mongodb-query.html
2. PyMongo
PyMongo提供了在python裡操作MongoDB的工具,官方教程:http://api.mongodb.com/python/current/tutorial.html
(1)首先建立一個mongoclient,預設是本地埠
import pymongo
client = pymongo.MongoClient()
如果是連其他伺服器埠
client = pymongo.MongoClient('192.xxx.x.xxx') # 建立一個連線
client['test'].authenticate('username', 'password')
(2)建立資料庫,類似字典引用
db = client['my_database']
(3)建立collection
collection = db['my_collection']
注意MongoDB是惰性的,即在插入第一條資料之前,資料庫和collection都不會真的生成(4)插入一條文件,文件在MongoDB中的儲存格式是json,在pymongo中我們一般傳入字典。
dic = {'name':'serena',"id":1532}
collection.insert_one(dic)
(5)插入多條文件,可以傳入list of dict, 即一個字典的列表,每個元素是一條記錄,然後用insert_many()
list_of_records = [{'name': 'amy', 'id': 1798},{'name': 'bob', 'id': 1631}]
collection.insert_many(list_of_records)
(6)查詢記錄,find_one(), find()
列印所有記錄
for record in collection.find():
pprint.pprint(record)
查詢一條
collection.find_one({'name': 'amy'})
查詢所有滿足條件的
collection.find({'name': 'amy'})
(7)count
collection.count()
collection.find().count()