mongoDB的操作

查看當(dāng)前數(shù)據(jù)庫(kù)名稱(chēng)
> db
py3
列出所有在物理上存在的數(shù)據(jù)庫(kù)
> show dbs
admin  0.000GB
local  0.000GB
py3    0.000GB
切換數(shù)據(jù)庫(kù)如果數(shù)據(jù)庫(kù)不存在,則指向數(shù)據(jù)庫(kù),但不創(chuàng)建,直到插入數(shù)據(jù)或創(chuàng)建集合時(shí)數(shù)據(jù)庫(kù)才被創(chuàng)建
use 數(shù)據(jù)庫(kù)名稱(chēng)

默認(rèn)的數(shù)據(jù)庫(kù)為test,如果你沒(méi)有創(chuàng)建新的數(shù)據(jù)庫(kù),集合將存放在test數(shù)據(jù)庫(kù)中

刪除數(shù)據(jù)庫(kù)
db.dropDatabase()  如果數(shù)據(jù)庫(kù)不存在,則什么也不做
創(chuàng)建集合
db.createCollection(name, options)

name是要?jiǎng)?chuàng)建的集合的名稱(chēng)
options是一個(gè)文檔,用于指定集合的配置
選項(xiàng)??參數(shù)是可選的,所以只需要到指定的集合名稱(chēng)。以下是可以使用的選項(xiàng)列表:

不限制集合大小
> db.createCollection('stu')
{ "ok" : 1 }

限制集合大小,后面學(xué)會(huì)插入語(yǔ)句后可以查看效果
參數(shù)capped:默認(rèn)值為false表示不設(shè)置上限,值為true表示設(shè)置上限
參數(shù)size:當(dāng)capped值為true時(shí),需要指定此參數(shù),表示上限大小,
當(dāng)文檔達(dá)到上限時(shí),會(huì)將之前的數(shù)據(jù)覆蓋,單位為字節(jié)
> db.createCollection("sub", { capped : true, size : 10 } )
{ "ok" : 1 }
查看當(dāng)前數(shù)據(jù)庫(kù)的集合
> show collections
stu
sub
刪除集合
db.集合名稱(chēng).drop()

> db.sub.drop()
true
數(shù)據(jù)類(lèi)型

下面為MongoDB中常用的幾種數(shù)據(jù)類(lèi)型:

  • Object ID:文檔ID
  • String:字符串,最常用,必須是有效的UTF-8
  • Boolean:存儲(chǔ)一個(gè)布爾值,true或false
  • Integer:整數(shù)可以是32位或64位,這取決于服務(wù)器
  • Double:存儲(chǔ)浮點(diǎn)值
  • Arrays:數(shù)組或列表,多個(gè)值存儲(chǔ)到一個(gè)鍵
  • Object:用于嵌入式的文檔,即一個(gè)值為一個(gè)文檔
  • Null:存儲(chǔ)Null值
  • Timestamp:時(shí)間戳
  • Date:存儲(chǔ)當(dāng)前日期或時(shí)間的UNIX時(shí)間格式
object id
  • 每個(gè)文檔都有一個(gè)屬性,為_(kāi)id,保證每個(gè)文檔的唯一性
  • 可以自己去設(shè)置_id插入文檔
  • 如果沒(méi)有提供,那么MongoDB為每個(gè)文檔提供了一個(gè)獨(dú)特的_id,類(lèi)型為objectID
  • objectID是一個(gè)12字節(jié)的十六進(jìn)制數(shù)
    • 前4個(gè)字節(jié)為當(dāng)前時(shí)間戳
    • 接下來(lái)3個(gè)字節(jié)的機(jī)器ID
    • 接下來(lái)的2個(gè)字節(jié)中MongoDB的服務(wù)進(jìn)程id
    • 最后3個(gè)字節(jié)是簡(jiǎn)單的增量值

數(shù)據(jù)操作
插入
db.集合名稱(chēng).insert(document)

> db.stu.insert({name:'lin',gender:1})
WriteResult({ "nInserted" : 1 })
插入文檔時(shí),如果不指定_id參數(shù),MongoDB會(huì)為文檔分配一個(gè)唯一的ObjectId
查詢(xún)
db.集合名稱(chēng).find()

> db.stu.find()
{ "_id" : ObjectId("59c710796a500f3f437a755e"), "name" : "lin", "gender" : 1 }
更新
db.集合名稱(chēng).update(  
   <query>,
   <update>,
   {multi: <boolean>}
)

> db.stu.update({},{name:'hh1'})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.stu.update({},{$set:{name:'ll'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  • 參數(shù)query:查詢(xún)條件,類(lèi)似sql語(yǔ)句update中where部分
  • 參數(shù)update:更新操作符,類(lèi)似sql語(yǔ)句update中set部分
  • 參數(shù)multi:可選,默認(rèn)是false,表示只更新找到的第一條記錄,值為true表示把滿(mǎn)足條件的文檔全部更新
刪除
db.集合名稱(chēng).remove(
   <query>,
   {
     justOne: <boolean>
   }
)

全部刪除:
db.stu.remove({})
  • 參數(shù)query:可選,刪除的文檔的條件
  • 參數(shù)justOne:可選,如果設(shè)為true或1,則只刪除一條,默認(rèn)false,表示刪除多條
高級(jí)查詢(xún)
基本查詢(xún)
  • 方法find():查詢(xún)
db.集合名稱(chēng).find({條件文檔})
  • 方法findOne():查詢(xún),只返回第一個(gè)
db.集合名稱(chēng).findOne({條件文檔})
  • 方法pretty():將結(jié)果格式化
db.集合名稱(chēng).find({條件文檔}).pretty()
比較運(yùn)算符
  • 等于,默認(rèn)是等于判斷,沒(méi)有運(yùn)算符
  • 小于$lt
  • 小于或等于$lte
  • 大于$gt
  • 大于或等于$gte
  • 不等于$ne
> db.sub.find({count:{$gt:7}})  查找count大于7的數(shù)據(jù)
{ "_id" : ObjectId("59c716f76493fcc0981a5939"), "title" : "sql", "count" : 11 }
{ "_id" : ObjectId("59c717526493fcc0981a593b"), "title" : "js", "count" : 13 }
邏輯運(yùn)算符
  • 邏輯與:默認(rèn)是邏輯與的關(guān)系
db.sub.find({title:'sql',count:{$gt:7}})  查詢(xún)title為sql 并且 count>7的數(shù)據(jù)
  • 邏輯或:使用$or
> db.sub.find({$or:[{title:'css'},{count:{$gt:7}}]})  查詢(xún)title為css 或者 count>7的數(shù)據(jù)
{ "_id" : ObjectId("59c716eb6493fcc0981a5938"), "title" : "css", "count" : 3 }
{ "_id" : ObjectId("59c716f76493fcc0981a5939"), "title" : "sql", "count" : 11 }
{ "_id" : ObjectId("59c717526493fcc0981a593b"), "title" : "js", "count" : 13 }
  • and和or一起使用
范圍運(yùn)算符
  • 使用"$in","$nin" 判斷是否在某個(gè)范圍內(nèi)
db.sub.find({count:{$nin:[3,7]}})  查詢(xún)count不在3,7的
支持正則表達(dá)式
  • 使用//或$regex編寫(xiě)正則表達(dá)式
自定義查詢(xún)
  • 使用$where后面寫(xiě)一個(gè)函數(shù),返回滿(mǎn)足條件的數(shù)據(jù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,208評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,746評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,666評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,477評(píng)論 6 407
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,960評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,200評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,726評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,617評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,807評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,049評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,425評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,674評(píng)論 1 281
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,432評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,769評(píng)論 2 372

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,781評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,710評(píng)論 18 399
  • MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫(xiě),旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)...
    LittlePy閱讀 1,592評(píng)論 0 4
  • 我從來(lái)沒(méi)有真正感受過(guò)生機(jī) 像我從春的姿態(tài)里 所感受的那么深 無(wú)論自哪一個(gè)思想里醒來(lái) 我的眼睛遇見(jiàn)它 屹立在那同一個(gè)...
    陽(yáng)分子閱讀 167評(píng)論 0 1
  • 兩天的路程都是在晚上十點(diǎn)以后,所以今天多睡了會(huì),八點(diǎn)鐘吃完早飯后,開(kāi)始向紅原縣出發(fā),目的地若蓋爾大草原。 觀(guān)音橋...
    思念的詩(shī)閱讀 326評(píng)論 1 1