接續上一篇,不管是什麼資料庫基本上的功能大概就幾種
新增資料、刪除資料、更新資料、查詢資料等...
這點mongodb跟mysql或是其他關聯式資料庫基本上都是一致的
不管任何操作第一步都需要指定哪個資料庫( use dbname)
===新增===
由於mongodb不必事先定義欄位,所以新增的時候也不用先建立資料庫跟資料表
use dbname,insert data到collection,這個collection就會自動產生了
現在要新增一個資料庫叫mongodb-test,以及存入一筆資料到test-collection
use mongodb-test
db.test-collection.insert({資料})
資料基本上就是用json的格式儲存
===搜尋===
接著我要搜尋某個collections的資料,語法大概如下
db.collection.find({條件},{欄位})
db.collection.find({"name":"tszheng"}) #查詢name=tszheng的資料
db.collection.find({},{"score":{$gt:60}}) #查詢score大於60的資料
db.collection.find({},{"type":0}) #查詢的結果不顯示type這個欄位
db.collection.findOne() #查詢最近的一筆資料
db.collection.find().sort({"欄位":1}) #對欄位進行正/反向排序,python的寫法不一樣
db.collection.find().count() #查詢出來結果的數量
db.collection.find().limit(100) #顯示100筆查詢的結果
另外因為mongodb欄位很自由,不是每筆資料都有所有欄位,所以還可以查詢xxx欄位存在的資料
db.collection.find({"xxx":{$exists:true}})
===刪除===
刪除比較簡單,find的條件搜尋出來的結果要刪除,就把find改成remove就可以了
db.collection.remove({條件})
要全刪的時候也不要忘記要下條件
db.collection.remove({})
===更新===
db.collection.update({'xxx':'條件'},{$set:{'xxx':'新資料'}},{multi:true})
後面的multi:true是指符合此條件的資料全部進行更新,如果沒有這個參數則會更新符合條件最新的一筆資料
===python進行資料庫操作===
from pymongo import MongoClient #import pymongo
client = MongoClient('localhost',27017) #連線
db = client.collection #選擇資料庫
db.collection.insert({"title":"地一筆資料",...}) #插入資料
rc = db.collection.find() #搜尋資料
for i in range(0,rc.count(),1):
print rc[i]['ip'] 印出所有資料的ip欄位
比較特殊的是如果儲存的是時間,那要用python轉成object存入
還有上面有提到sort的寫法在python是不一樣的
db.collection.find().sort("欄位",1) 前後並沒有{},同時欄位以及正/反排序是用 , 而不是 :
另外如果要查詢ObjectId他一樣是一個Object,不能直接用string下去查詢
from bson import ObjectId
oid_str = '5a7931de20be054518904450'
oid = ObjectId(oid_str)
新增資料、刪除資料、更新資料、查詢資料等...
這點mongodb跟mysql或是其他關聯式資料庫基本上都是一致的
不管任何操作第一步都需要指定哪個資料庫( use dbname)
===新增===
由於mongodb不必事先定義欄位,所以新增的時候也不用先建立資料庫跟資料表
use dbname,insert data到collection,這個collection就會自動產生了
現在要新增一個資料庫叫mongodb-test,以及存入一筆資料到test-collection
use mongodb-test
db.test-collection.insert({資料})
資料基本上就是用json的格式儲存
===搜尋===
接著我要搜尋某個collections的資料,語法大概如下
db.collection.find({條件},{欄位})
db.collection.find({"name":"tszheng"}) #查詢name=tszheng的資料
db.collection.find({},{"score":{$gt:60}}) #查詢score大於60的資料
db.collection.find({},{"type":0}) #查詢的結果不顯示type這個欄位
db.collection.findOne() #查詢最近的一筆資料
db.collection.find().sort({"欄位":1}) #對欄位進行正/反向排序,python的寫法不一樣
db.collection.find().count() #查詢出來結果的數量
db.collection.find().limit(100) #顯示100筆查詢的結果
另外因為mongodb欄位很自由,不是每筆資料都有所有欄位,所以還可以查詢xxx欄位存在的資料
db.collection.find({"xxx":{$exists:true}})
===刪除===
刪除比較簡單,find的條件搜尋出來的結果要刪除,就把find改成remove就可以了
db.collection.remove({條件})
要全刪的時候也不要忘記要下條件
db.collection.remove({})
===更新===
db.collection.update({'xxx':'條件'},{$set:{'xxx':'新資料'}},{multi:true})
後面的multi:true是指符合此條件的資料全部進行更新,如果沒有這個參數則會更新符合條件最新的一筆資料
===python進行資料庫操作===
from pymongo import MongoClient #import pymongo
client = MongoClient('localhost',27017) #連線
db = client.collection #選擇資料庫
db.collection.insert({"title":"地一筆資料",...}) #插入資料
rc = db.collection.find() #搜尋資料
for i in range(0,rc.count(),1):
print rc[i]['ip'] 印出所有資料的ip欄位
比較特殊的是如果儲存的是時間,那要用python轉成object存入
還有上面有提到sort的寫法在python是不一樣的
db.collection.find().sort("欄位",1) 前後並沒有{},同時欄位以及正/反排序是用 , 而不是 :
另外如果要查詢ObjectId他一樣是一個Object,不能直接用string下去查詢
from bson import ObjectId
oid_str = '5a7931de20be054518904450'
oid = ObjectId(oid_str)