MongoDB基礎(chǔ)學習筆記

基礎(chǔ)知識

特點
  • 是一個面向文檔存儲的數(shù)據(jù)庫抡锈,操作起來比較簡單和容易
  • 可以在 MongoDB 記錄中設(shè)置任何屬性的索引值
  • 可以通過本地或者網(wǎng)絡(luò)創(chuàng)建數(shù)據(jù)鏡像
一些術(shù)語
SQL術(shù)語 MongoDB術(shù)語 說明
database database 數(shù)據(jù)庫
table collection 數(shù)據(jù)庫表/集合
row document 數(shù)據(jù)記錄行/文檔
column field 數(shù)據(jù)字段/域
index index 索引
table joins - 表連接,MongoDB不支持
primary key primary key 主鍵,MongoDB自動將_id字段設(shè)置為主鍵
數(shù)據(jù)庫
  • 一個 MongoDB 可以建立多個數(shù)據(jù)庫
  • "show dbs"可以顯示所有數(shù)據(jù)的列表
  • 數(shù)據(jù)庫不能是空字符串豌拙、不得含有空格菇存、空字符
  • 應全部小寫
  • 最多64字節(jié)
  • 特殊數(shù)據(jù)庫:admin侧纯、local嘉栓、config
文檔
  • 文檔是一組鍵值對(BSON)
  • take care:
(1) 文檔中的鍵值對是有序的
(2) 文檔中的值不僅可以是字符串,也可以是其它幾種數(shù)據(jù)類型
(3) MongDB 的文檔不能有重復的鍵
(4) MongoDB 區(qū)分類型和大小寫
(5) 文檔的鍵是字符串捐祠,除了少數(shù)例外的情況碱鳞,鍵可以使用任意UTF-8字符
  • 文檔鍵命名規(guī)范
(1)不能含有空字符,這個字符用來表示鍵的結(jié)尾
(2). 和 $ 有特別的意義雏赦,只有在特定環(huán)境下才能使用
(3)以下劃線開頭的鍵是保留的
集合
  • 集合就是MongoDB的文檔組
  • 集合存在于數(shù)據(jù)庫劫笙,沒有固定的結(jié)構(gòu)
objectId
  • 類似唯一地主鍵,可以很快去生成和排序星岗,包含了12bytes填大, 4時間戳--3機器標識碼--2PID--3隨機數(shù)
  • 可以通過getTimestamp函數(shù)來獲取到文檔的創(chuàng)建時間
# 取文檔的創(chuàng)建時間:
> var newObject = ObjectId()
> newObject.getTimestamp()
ISODate("2017-11-25T07:21:10Z")

# ObjectId轉(zhuǎn)為字符串:
> newObject.str
5a1919e63df83ce79df8b38f

相關(guān)操作

MongoDB創(chuàng)建數(shù)據(jù)庫
  1. 創(chuàng)建數(shù)據(jù)庫
> use mydatabase
switched to db runoob
> db
mydatabase
>
  1. 查看數(shù)據(jù)庫
> show dbs
> db
MongoDB刪除數(shù)據(jù)庫
  1. db.dropDatabse()
  2. db.collecion.drop() 刪除集合,其中collection是集合的名字
MongoDB創(chuàng)建集合
  1. db.createCollection(name, options)
    name 要創(chuàng)建的集合名稱
    options 指定有關(guān)內(nèi)存大小以及索引的選項
  2. 在MongoDB中俏橘,不需要創(chuàng)建集合允华,當需要插入文檔時,MongoDB會自動創(chuàng)建集合
MogonDB刪除集合
  1. db.collection.drop()
    返回值:刪除成功返回true寥掐,否則返回false
  2. show collcetions 查看已存在的集合
MongoDB插入文檔
  1. 使用insert()或save()方法向集合中插入文檔
db.COLLECTION_NAME.insert(document).insert(document)
MongoDB更新文檔
  1. update()用于更新已經(jīng)存在的文檔
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
})


>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
  1. save() 方法通過傳入的文檔來替換已有文檔
db.collection.save(
<document>,
{
writeConcern: <document>
})
>db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110})
MongoDB刪除文檔
  1. remove()函數(shù)是用來移除集合中的數(shù)據(jù)
  2. 語法:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
})
MongoDB查詢文檔

db.collection.find() 以非結(jié)構(gòu)化的方式來顯示所有文檔
db.collection.find().pretty() 以易讀的方式來讀取數(shù)據(jù)
db.collection.findOne() 只返回一個文檔

  1. MongoDB與RDBMS where語句比較
操作 格式 范例 RDBMS中的類似語句
等于 {<key>:<value>} db.col.find({"by":"菜鳥教程"}).pretty() where by = '菜鳥教程'
小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50
  1. MongoDB AND條件
>db.col.find({key1:value1, key2:value2}).pretty()
  1. MongoDB OR條件
>db.col.find({$or:[{"by":"菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()
  1. AND和OR聯(lián)合使用
>db.col.find({"likes": {$gt:50}, $or: [{"by": "someone"},{"title": "MongoDB 教程"}]}).pretty()
MongoDB條件操作符
符號 解釋
$gt 大于
$lt 小于
$gte 大于等于
$lte 小于等于
MongoDB Limit與Skip方法
  1. limit() 在MongoDB中讀取指定數(shù)量的數(shù)據(jù)記錄
>db.COLLECTION_NAME.find().limit(NUMBER)
  1. skip() 來跳過指定數(shù)量的數(shù)據(jù)靴寂,接受一個數(shù)字參數(shù)作為跳過的記錄條數(shù),skip()方法默認參數(shù)為0
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
MongoDB 排序

1.sort () 方法可以通過指定參數(shù)指定排序的字段召耘, 并使用 1-1 來指定排序的方式百炬,其中 1 為升序排序,-1 為降序排序

2.語法:

>db.COLLECTION_NAME.find().sort({KEY:1})
MongoDB 索引
  1. 索引的作用:能夠極大的提高查詢的效率
  2. 創(chuàng)建索引:createIndex()
>db.collection.createIndex(keys, options)

說明:key值為要創(chuàng)建的索引字段污它,1為按升序創(chuàng)建索引剖踊,-1為按降序創(chuàng)建索引

MongoDB 聚合
  1. MongoDB中聚合(aggregate)主要用于處理數(shù)據(jù)(諸如統(tǒng)計平均值,求和)衫贬,并返回計算后的數(shù)據(jù)結(jié)果德澈。
  2. 語法:
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
學習鏈接

官方文檔:https://docs.mongodb.com/
菜鳥教程:http://www.runoob.com/mongodb/mongodb-tutorial.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市固惯,隨后出現(xiàn)的幾起案子梆造,更是在濱河造成了極大的恐慌,老刑警劉巖葬毫,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镇辉,死亡現(xiàn)場離奇詭異屡穗,居然都是意外死亡,警方通過查閱死者的電腦和手機忽肛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門鸡捐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人麻裁,你說我怎么就攤上這事≡雌恚” “怎么了煎源?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長香缺。 經(jīng)常有香客問我手销,道長,這世上最難降的妖魔是什么图张? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任锋拖,我火速辦了婚禮,結(jié)果婚禮上祸轮,老公的妹妹穿的比我還像新娘兽埃。我一直安慰自己,他們只是感情好适袜,可當我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布柄错。 她就那樣靜靜地躺著,像睡著了一般苦酱。 火紅的嫁衣襯著肌膚如雪售貌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天疫萤,我揣著相機與錄音颂跨,去河邊找鬼。 笑死扯饶,一個胖子當著我的面吹牛恒削,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播帝际,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼蔓同,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蹲诀?” 一聲冷哼從身側(cè)響起斑粱,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脯爪,沒想到半個月后则北,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矿微,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年尚揣,在試婚紗的時候發(fā)現(xiàn)自己被綠了涌矢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡快骗,死狀恐怖娜庇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情方篮,我是刑警寧澤名秀,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布,位于F島的核電站藕溅,受9級特大地震影響匕得,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巾表,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一汁掠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧集币,春花似錦考阱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至偶妖,卻和暖如春姜凄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背趾访。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工态秧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扼鞋。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓申鱼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親云头。 傳聞我的和親對象是個殘疾皇子捐友,可洞房花燭夜當晚...
    茶點故事閱讀 43,576評論 2 349