1. 程式人生 > >MongoDB 2 之 手把手教你增刪改查

MongoDB 2 之 手把手教你增刪改查

我們在  MongoDB 之 你得知道MongoDB是個什麼鬼 MongoDB - 1  中學習瞭如果安裝部署一個 MongoDB

如果沒看到我的金玉良言的話,就重新開啟一次客戶端和服務端吧

本章我們來學習一下關於 MongoDB的增刪改查

一.MongoDB操作 之 原生ORM,根本不存在SQL語句

建立資料庫:這裡和一般的關係型資料庫一樣,都要先建立一個自己的資料庫空間

嗯嗯嗯嗯,我感受到了你內心的驚呼,瞅瞅你們這些沒見過世面的樣子

是的,MongoDB設計的比較隨意,沒有就認為你是在建立,use LuffyCity_Com是不存在的,所以MongoDB就認為你是要建立並使用

這個概念一定要記清楚哦,MongoDB中如果你使用了不存在的物件,那麼就等於你在建立這個物件哦

使用了不存在的物件,就代表建立物件,我們使用這一謬論建立一張表(Collection)試試

看來真的不是謬論,真的成功的建立了一個Oldboy的Collection

那麼接下來就是在表(Collection)中新增一條資料了,怎麼新增呢?

二.MongoDB 之 插入資料(insert     insertOne     insertMany) 之 Collection 點兒出一切操作 之 insert

insert:插入一條或者多條資料,需要帶有允許插入多條的引數,這個方法目前官方已經不推薦嘍

db.Oldboy.insert({"name":"DragonFire","age":20})

insertOne: 插入一條資料,官方推薦

我們可以看出來兩種方法的返回值截然不同對吧

insertMany:插入多條資料,無需引數控制,官方推薦

 

這就是我們向LuffyCity_Com.Oldboy中插入了多條資料:

複製程式碼
[{
  "name":"DragonFire",
  "age":20    
},
{
 "name":"WuSir",
 "age":19
}]
複製程式碼

這裡留下一個資料型別的懸念

插入完成就要查詢

三.MongoDB  之  查詢資料(find findOne) 之 這裡沒有findMany

這裡不是select,如果你的第一反應是select 證明你關係型資料庫沒白學

find() 無條件查詢:將該表(Collection)中所有的資料一次性返回

db.Oldboy.find({name:"WuSir2b"}) 條件查詢:name等於WuSir2b的資料,這裡會返回多條結果

說到這裡,有的同學不禁要問一下:"_id":ObjectId("亂七八糟一道對看著毫無關係的一對字串") 是什麼,我們插入的時候並沒有一個欄位(Field)並沒有_id這個,

對了這就是MongoDB自動給我們新增到系統唯一標識"_id" 是一個ObjectId 型別,我們會在資料型別中第一個說到他(MongoDB 之 資料型別 最無聊! But 最有用! MongoDB - 3)

findOne()無條件查詢一條資料,預設當前Collection中的第一條資料

findOne({age:19}) : 條件查詢一條age等於19的資料,如有多條資料則返回更靠前的資料

查詢資料的時候,發現了有些資料出現錯誤了,要修改怎麼辦呢?

 

四.MongoDB 之 修改資料(update updateOne updateMany) 之 跟insert一樣,不推薦update的寫法

update({"name":"DragonFire"},{$set:{"age":21}}):根據條件修改該條資料的內容

把name等於DragonFire中的age改為21,這裡要注意的是({"條件"},{"關鍵字":{"修改內容"}}),其中如果條件為空,那麼將會修改Collection中所有的資料

關於$set關鍵字的解釋就是,本節最後再說,留個懸念

updateOne({"age":19},{$set:{"name":"WSSB"}}):根據條件修改一條資料的內容,如出現多條,只修改最高前的資料

把age等於19的所有資料中第一條資料的name改為WSSB

updateMany({"age":19},{$set:{"name":"pig_qi"}}):根據條件修改所有資料的內容,多條修改

把age等於19的所有資料中的name改為WSSB

上述中有一個$set的懸念,這個懸念呀,可能要留到再往後一些了

但是$set:{"name":"WSSB"}我還是要解釋一下: $set 是update時的關鍵字,表示我要設定name屬性的值為"WSSB"

那麼我們之前說過MongoDB的靈活性,沒有就代表我要建立,所以說如果該條Documents沒有name屬性,他就會自動建立一個name屬性並且賦值為"WSSB"

更改了半天,我覺得,這些資料我都不想要了,該怎麼辦呢?

 

四.MongoDB  之  刪除資料(remove) 之 如果你什麼都不寫,你講失去全部的生命力

remove({}):無條件刪除資料,這裡要注意了,這是刪除所有資料,清空Collection

當然了,我現在還不會操作,你看到的截圖是我全部都寫完之後的截圖,如果跟著操作的話,那麼你實在是太傻了,哈哈哈哈哈哈哈哈

 

如果你的資料全沒了,那麼請再練習一次insertMany([{"name":"DragonFire"}])吧,你多練習一次,總比馬上忘記要強吧

remove({"name":"DragonFire"}) : 條件刪除name等於"DragonFire"的所有Document

那麼到這裡呢,增刪改查就已經完事兒了

之後我們來說一下MongoDB的資料型別,跟你們透漏一下,MongoDB的資料型別,老(te)有(bie)意(wu)思(liao)了