1. 程式人生 > >mongodb和pymongo建立資料庫和基礎操作

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()