MongoDB建表以及CRUD操作

1. MongoDB 創(chuàng)建數(shù)據(jù)庫

使用

use database_name

來創(chuàng)建數(shù)據(jù)庫

如果數(shù)據(jù)庫不存在,則創(chuàng)建數(shù)據(jù)庫官辈,否則切換到指定數(shù)據(jù)庫。

> use xzamrzs
switched to db xzamrzs
> db
xzamrzs
> 

注意晴股,此時使用show dbs并不能看到該數(shù)據(jù)庫电湘,因為該數(shù)據(jù)庫是空的寂呛,默認(rèn)是不顯示的瘾晃。

要顯示它,可以插入一條數(shù)據(jù)

db.xzamrzs.insert({"name":"xzamrzs"})
WriteResult({ "nInserted" : 1 })
> show dbs
local 0.078GB
xzamrzs 0.078GB
test 0.078GB
> 

2. MongoDB 刪除數(shù)據(jù)庫

刪除數(shù)據(jù)庫的語法:

db.dropDatabase()

刪除當(dāng)前數(shù)據(jù)庫劫拢,默認(rèn)為 test强胰,你可以使用 db 命令查看當(dāng)前數(shù)據(jù)庫名。

> db
hls
> db.dropDatabase()
{ "dropped" : "hls", "ok" : 1 }
> show dbs
admin  (empty)
local  0.078GB
test   (empty)

刪除集合(即表)

集合刪除語法格式如下:

db.collection.drop()

3. MongoDB 插入文檔

語法:

db.COLLECTION_NAME.insert(document)
>db.col.insert({title: 'MongoDB 教程',
 description: 'MongoDB 是一個 Nosql 數(shù)據(jù)庫',
 by: '菜鳥教程', 
 url: 'http://www.runoob.com',
 tags: ['mongodb','database', 'NoSQL'], 
 likes: 100
})

以上實例中 col是集合名熟吏,如果該集合不在該數(shù)據(jù)庫中, MongoDB 會自動創(chuàng)建該集合并插入文檔悍引。

查看已插入文檔
我們也可以將數(shù)據(jù)定義為一個變量帽氓,如下所示:

> db.col.find()]
{ "_id" : ObjectId("5796ba4039c2affade7a9269"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }

我們也可以將數(shù)據(jù)定義為一個變量再插入,如下所示:

> document=({title: 'MongoDB 教程', 
...     description: 'MongoDB 是一個 Nosql 數(shù)據(jù)庫',
...     by: '菜鳥教程',
...     url: 'http://www.runoob.com',
...     tags: ['mongodb', 'database', 'NoSQL'],
...     likes: 100
... });

執(zhí)行后顯示結(jié)果如下:

{
    "title" : "MongoDB 教程",
    "description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫",
    "by" : "菜鳥教程",
    "url" : "http://www.runoob.com",
    "tags" : [
        "mongodb",
        "database",
        "NoSQL"
    ],
    "likes" : 100
}

執(zhí)行插入操作:

> db.col.insert(document)
WriteResult({ "nInserted" : 1 })
> 

插入文檔你也可以使用__ db.col.save(document)__ 命令。如果不指定 _id 字段 save() 方法類似于 insert() 方法奋渔。如果指定 _id 字段壮啊,則會更新該 _id 的數(shù)據(jù)。

4. MongoDB 更新文檔

MongoDB 使用 update()save() 方法來更新集合中的文檔

update() 方法

update() 方法用于更新已存在的文檔玄渗。語法格式如下:

db.collection.update(
     <query>,
     <update>,
     { 
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document> 
      }
)

參數(shù)說明:
**query **: update的查詢條件狸眼,類似sql update查詢內(nèi)where后面的。
**update **: update的對象和一些更新的操作符(如$,$inc...)等岁钓,也可以理解為sql update查詢內(nèi)set后面的
upsert : 可選微王,這個參數(shù)的意思是,如果不存在update的記錄钧大,是否插入objNew,true為插入罩旋,默認(rèn)是false,不插入劣挫。(很常用!!!!!!!!)
**multi ** : 可選东帅,mongodb 默認(rèn)是false,只更新找到的第一條記錄,如果這個參數(shù)為true,就把按條件查出來多條記錄全部更新靠闭。
**writeConcern ** :可選,拋出異常的級別拦键。

之前插入的數(shù)據(jù)現(xiàn)在讓我們來用update()方法來更新標(biāo)題(title):

> db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.col.find().pretty()   #這個方法可以類似pprint芬为,打印出來的結(jié)果比較整齊
{
    "_id" : ObjectId("5796ba4039c2affade7a9269"),
    "title" : "MongoDB",
    "description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫",
    "by" : "菜鳥教程",
    "url" : "http://www.runoob.com",
    "tags" : [
        "mongodb",
        "database",
        "NoSQL"
    ],
    "likes" : 100
}
{
    "_id" : ObjectId("5796c0ba39c2affade7a926a"),
    "title" : "MongoDB 教程",
    "description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫",
    "by" : "菜鳥教程",
    "url" : "http://www.runoob.com",
    "tags" : [
        "mongodb",
        "database",
        "NoSQL"
    ],
    "likes" : 100
}

以上語句只會修改第一條發(fā)現(xiàn)的文檔,如果你要修改多條相同的文檔氧敢,則需要設(shè)置 multi 參數(shù)為 true询张。

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})

save() 方法(要輸入整個,不常用)

save() 方法通過傳入的文檔來替換已有文檔唯袄。語法格式如下:

db.collection.save(
     <document>, 
      { 
          writeConcern: <document>
      }
)

只更新第一條記錄:

db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

全部更新:

db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

5. MongoDB 刪除文檔

db.collection.remove(
     <query>,
     {
         justOne: <boolean>,
         writeConcern: <document>
     }
)

參數(shù)說明:
**query **:(可選)刪除的文檔的條件蜗帜。
**justOne **: (可選)如果設(shè)為 true 或 1,則只刪除一個文檔梅掠。
**writeConcern ** :(可選)拋出異常的級別店归。

用find()查看之前插入的兩條數(shù)據(jù)

> db.col.find()
{ "_id" : ObjectId("5796ba4039c2affade7a9269"), "title" : "MongoDB", "description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
{ "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫", "by" : "Runoob", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 }
> db.col.remove({'title':'MongoDB'})
WriteResult({ "nRemoved" : 2 })  # 刪除了兩條數(shù)據(jù)
> db.col.find()                    # 沒有數(shù)據(jù)
> 

如果你只想刪除第一條找到的記錄可以設(shè)置 justOne 為 1消痛,如下所示:

>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

如果你想刪除所有數(shù)據(jù),可以使用以下方式(類似常規(guī) SQL 的 truncate 命令):

>db.col.remove({})
>db.col.find()
>

6. MongoDB 查詢文檔

查詢方式之前已經(jīng)展示了好幾次了.
MongoDB 查詢數(shù)據(jù)的語法格式如下:

>db.COLLECTION_NAME.find()

find() 方法以非結(jié)構(gòu)化的方式來顯示所有文檔秩伞。
如果你需要以易讀的方式來讀取數(shù)據(jù)纱新,可以使用 pretty() 方法,語法格式如下:

>db.col.find().pretty()

pretty() 方法以格式化的方式來顯示所有文檔脸爱。

除了 find() 方法之外,還有一個 findOne() 方法空入,它只返回一個文檔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末化戳,一起剝皮案震驚了整個濱河市埋凯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盟步,老刑警劉巖躏结,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件媳拴,死亡現(xiàn)場離奇詭異兆览,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)子巾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門小压,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仪搔,你說我怎么就攤上這事蜻牢。” “怎么了煮嫌?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵抱虐,是天一觀的道長。 經(jīng)常有香客問我宝泵,道長,這世上最難降的妖魔是什么儿奶? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任闯捎,我火速辦了婚禮,結(jié)果婚禮上秉版,老公的妹妹穿的比我還像新娘茬祷。我一直安慰自己,他們只是感情好祭犯,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布沃粗。 她就那樣靜靜地躺著,像睡著了一般突雪。 火紅的嫁衣襯著肌膚如雪涡贱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天饵婆,我揣著相機(jī)與錄音戏售,去河邊找鬼。 笑死灌灾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的些己。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼涯冠,長吁一口氣:“原來是場噩夢啊……” “哼逼庞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起派任,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤璧南,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后司倚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皿伺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拆讯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片养叛。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖爽室,靈堂內(nèi)的尸體忽然破棺而出淆攻,到底是詐尸還是另有隱情,我是刑警寧澤瓶珊,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布伞芹,位于F島的核電站蝉娜,受9級特大地震影響扎唾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胸遇,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一狐榔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧收捣,春花似錦庵楷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至差凹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呐萌,已是汗流浹背谊娇。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留赠堵,地道東北人法褥。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像杂靶,于是被迫代替她去往敵國和親蝴悉。 傳聞我的和親對象是個殘疾皇子楷怒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

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