啓動mongodb服務端 : sudo service mongod start 或者 sudo /usr/local/mongodb/bin/mongod --config /etc/mongodb.confpython
中止mongodb服務端: sudo service mongodb stopmysql
查詢mongodb服務器狀態命令查詢狀態
ps -ajx|grep mongod 或者 sudo systemctl status mongodbweb
數據庫操做sql
進入數據庫:mongomongodb
顯示全部的數據庫:show databases ->show dbs數據庫
查看選手某個數據庫:db安全
數據庫切換(選擇和建立):use 數據庫名 ps: use test 默認是不會出現這個數據庫,除非建立集合纔會出現服務器
查看當前數據庫名稱:db數據結構
顯示集合:show collections ps:這裏的集合數據於mysql裏的表app
查看集合的數據:db.集合名.find({}) ps:db.student.find({}) 其中{}能夠不寫
刪除數據庫:db.dropDatabase()
sql語句中的刪除數據庫:drop database test3;
退出數據庫:Ctrl+c或者exit
集合(表)操做
在某個數據庫裏面建立集合:db.createCollection(name, options)
name是要建立的集合的名稱
options是一個文檔,用於指定集合的配置 ,選項參數是可選的,因此只須要到指定的集合名稱.
ps: 建立集合,集合的名字叫students:db.createCollection("students")
查看當前數據庫的全部集合:show collections或者show tables
刪除集合: db.students.drop()
數據基本操做
插入數據:db.集合名稱.insert(document) 插入文檔時,若是不指定_id參數,MongoDB會爲文檔分配一個惟一的ObjectId
insert,若是存在會報錯
ps: db.students.insert({"name":"gj",gender:1})
查看數據:db.students.find({})或者db.students.find()
也能夠本身指定id:
ps:db.students.insert({id:"20180418","name":"gj",gender:1})
簡單查詢
查詢全部的數據:db.students.find()或者db.students.find({})
更新數據:
db.集合名稱.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>})
參數query:查詢條件,相似sql語句update中where部分
參數update:更新操做符,相似sql語句update中set部分
參數upsert : 可選,這個參數的意思是,若是不存在update的記錄,是否插入objNew,true爲插入,默認是false,不插入。
參數multi:可選,默認是false,表示只更新找到的第一條記錄,值爲true表示把知足條件的文檔所有更新
ps:默認值更新一條數據,而且結構被修改 db.student.update({},{name:'mnc'})
默認值更新一條數據,只修改字段,不破壞數據 db.stu.update({},{$set:{name:'mnc'}})
全文檔找更新找到的第一條,把{name:'hr'}對應的這條修改爲{name:'mnc'},其餘字段所有丟掉
db.students.update({name:"hr"},{name:"mnc",gender:1})
指定屬性更新,經過操做符$set數據結構不會被破壞,也是隻修改一條
db.students.update({"name":"mnc"},{$set:{gender:0}})
修改多條匹配到的數據:多條操做必定要配合$set,不然會報錯注意true和flase是小寫
ps:把全部的性別都修改爲女生 db.students.update({},{$set:{gender:0}},{multi:true})
把全部的gj修改爲「郭靖」,而且不破壞結構 db.students.update({"name":"gj"},{$set:{"name":"郭靖"}},{multi:true})
"$set"也可加引號:db.students.update({"name":"gj"},{"$set":{"name":"郭靖"}},{"multi":true})
方法findOne():查詢,只返回第一個文檔:db.集合名稱.findOne({條件文檔})
方法pretty():將結果格式化: db.集合名稱.find({條件文檔}).pretty()
保存:
db.集合名稱.save(document) 若是文檔的_id已經存在則修改,而且結構變化,若是文檔的_id不存在則添加註意,若是_id寫成是id,則會把id當成key
ps:db.students.save({"_id":"20180418","name":"張三","gender":1})
刪除:db.集合名稱.remove(<query>,{justOne: <boolean>})
參數query:可選,刪除的文檔的條件
參數justOne:可選,若是設爲true或1,則只刪除一條,默認false,表示刪除多條
ps:只刪除匹配到的第一條 db.students.remove({"name" : "gj"},{"justOne":true})
所有刪除: db.students.remove({})
關於max的示例
ps:建立一個名爲sub的定長集合,長度爲5個字節,可容納的文檔數爲3
db.createCollection("sub",{"capped":true,size:5,max:3}) 這裏當插入的文檔數超過3時會自動替換前一個文檔
比較運算符
等於,默認是等於判斷,沒有運算符
小於$lt 計算機術語裏面是 less than,意思是小於,縮寫是lt
小於或等於$lte
大於$gt 對應 greater than,意思是大於,縮寫是gt ;
大於或等於$gte
不等於$ne 對應 Not equal to,意思是不等於,縮寫ne;
ps:查詢課時大於或等於2的學科 db.sub.find({"count":{"$gte":2}})
查找標題不是mongodb的學科 db.sub.find({'title':{'$ne':"mongodb"}})
邏輯運算符
查詢時能夠有多個條件,多個條件之間須要經過邏輯運算符鏈接
邏輯與:默認是邏輯與的關係,多個條件直接用逗號鏈接
ps:查詢課時大於或等於10,而且標題爲web的學科 db.sub.find({"count":{"$gte":10},"title":"web"})
邏輯或:使用$or
ps:查詢課時大於10,或標題爲web的學科 db.sub.find({"$or":[{"count":{"$gt":10}},{"title":"web"}]})
範圍運算符--"$in":使用"$in","$nin" 判斷是否在某個範圍內
ps:查詢課時爲八、14的學科 db.sub.find({"count":{"$in":[8,14]}})
查詢課時不爲八、14的學科 db.sub.find({"count":{"$nin":[8,14]}})
Limit與Skip:
db.集合名稱.find().limit(NUMBER), 參數NUMBER表示要獲取文檔的條數, 若是沒有指定參數或者0則顯示集合中的全部文檔
方法limit():用於讀取指定數量的文檔 ps: 查詢2條信息 db.sub.find({}).limit(2)
方法skip():用於跳過指定數量的文檔
db.集合名稱.find().skip(NUMBER) 參數NUMBER表示跳過的記錄條數,默認值爲0
ps:查詢從第3條開始的學生信息 db.stu.find().skip(2)
limit()和skip()一塊兒使用:
ps: 從第二條開始,而且只要三條 db.sub.find().skip(2).limit(3)
MongoDB與python交互:
建立客戶端:
#無安全認證: client = MongoClient('localhost', 27017) client = MongoClient('mongodb://localhost:27017/數據庫名稱') client = MongoClient('mongodb://localhost:27017/test1') #有安全認證: client = MongoClient('mongodb://用戶名:密碼@localhost:27017/數據庫名稱') client = MongoClient('mongodb://t1:123@localhost:27017/test1')
代碼實現:
from pymongo import MongoClient client = MongoClient("mongodb://localhost:27017/test1") #獲得名字叫test1的數據庫 test1 = client['test1'] #也能夠寫成 test1 = client.test1 #獲得名字叫t1的集合 t1 = test1['t1'] #也可寫成 t1 = test1.t1 #要插入的數據 s1 = {"name":"郭靖","age":18} s = t1.insert_one(s1)
更新數據:
s = t1.update_one({"name":"郭靖"},{"$set":{"name":"黃蓉"}})
刪除數據:
s1 = t1.delete_one({'name':'黃藥師'})
查找數據:
s1 = t1.find_one({'name':'黃蓉'})
#查找全部數據 t1.find()