資料庫之mongodb

來源:互聯網
上載者:User

標籤:術語   不為   直接   文檔   沒有   service   imp   報錯   伺服器   

啟動mongodb服務端 : sudo service mongod start 或者 sudo /usr/local/mongodb/bin/mongod --config /etc/mongodb.conf

停止mongodb服務端: sudo service mongodb stop

查詢mongodb伺服器狀態命令查詢狀態
ps -ajx|grep mongod 或者 sudo systemctl status mongodb

資料庫操作

進入資料庫:mongo

顯示所有的資料庫:show databases ->show dbs

查看選手某個資料庫:db

資料庫切換(選擇和建立):use 資料庫名  ps: use test  預設是不會出現這個資料庫,除非建立集合才會出現

查看當前資料庫名稱:db

顯示集合:show collections     ps:這裡的集合資料於mysql裡的表

查看集合的資料: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:查詢課時為8、14的學科  db.sub.find({"count":{"$in":[8,14]}})

   查詢課時不為8、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:[email protected]:27017/test1‘)

代碼實現:

from pymongo import MongoClientclient = 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()

 

 

  

 

資料庫之mongodb

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.