安裝
從mongoDB官網(wǎng) 下載 MongoDB 的最新版本,直接一路next诬像,如果想自定義安裝Choose Setup Type處選擇Custon
創(chuàng)建數(shù)據(jù)目錄
數(shù)據(jù)目錄需要我們手動(dòng)創(chuàng)建,這里我在F盤(pán)根目錄創(chuàng)建了data闸婴,在data下面創(chuàng)建了db(命令行坏挠,手動(dòng)都可以)
啟動(dòng)MOngoDB
在命令行中執(zhí)行mongod.exe文件,(必須在你所安裝的MongoDB目錄下的bin目錄內(nèi)執(zhí)行)
mongod.exe --dbpath F:\data\db
后面的 'F:\data\db' 就是要啟動(dòng)的數(shù)據(jù)庫(kù)的目錄地址
連接MongoDB
在上一步啟動(dòng)過(guò)的前提下邪乍,雙擊MongoDB目錄下bin目錄中的mongo.exe就可以用mongoDB的shell連接數(shù)據(jù)庫(kù)降狠,其他種連接方式以后再實(shí)驗(yàn)
創(chuàng)建數(shù)據(jù)庫(kù)
輸入命令:
> use jsl
swiched to db jsl # 輸出信息
這時(shí)对竣,就會(huì)創(chuàng)建出jsl命名的數(shù)據(jù)庫(kù)
查看當(dāng)前所在的數(shù)據(jù)庫(kù):
> db
jsl # 輸出信息
查看數(shù)據(jù)庫(kù)列表:
> show dbs
admin 0.000GB # 輸出信息
local 0.000GB # 輸出信息
這時(shí),并看不到我們剛創(chuàng)建的jsl的數(shù)據(jù)庫(kù)喊熟,這是因?yàn)閭€(gè)人創(chuàng)建的柏肪,空數(shù)據(jù)庫(kù)是不會(huì)顯示的
我們往這個(gè)數(shù)據(jù)庫(kù)里放一些數(shù)據(jù)
> db.jsl.insert({"name":"jsl"})
WriteResult({ "nInserted":1 }) # 輸出信息
再次查看數(shù)據(jù)庫(kù)列表:
> show dbs
admin 0.000GB # 輸出信息
jsl 0.000GB # 輸出信息
local 0.000GB # 輸出信息
刪除數(shù)據(jù)庫(kù)
語(yǔ)法格式
db.dropDatabase()
先查看數(shù)據(jù)庫(kù):
> show dbs
admin 0.000GB # 輸出信息
jsl 0.000GB # 輸出信息
local 0.000GB # 輸出信息
然后切換到j(luò)sl數(shù)據(jù)庫(kù)中:
> use jsl
switched to db jsl # 輸出信息
執(zhí)行刪除命令:
> db.dropDatabase()
{ "dropped" : "jsl", "ok": 1 }
然后驗(yàn)證一下姐刁,是否刪除成功:
> show dbs
admin 0.000GB # 輸出信息
local 0.000GB # 輸出信息
數(shù)據(jù)庫(kù)列表只剩下兩個(gè)芥牌,說(shuō)明jsl數(shù)據(jù)庫(kù)已經(jīng)刪除
刪除集合
語(yǔ)法:
db.collection.drop()
重新再創(chuàng)建一個(gè)叫jsl的數(shù)據(jù)庫(kù),并且切換到j(luò)sl中聂使,插入數(shù)據(jù):
db.jsl.insert({"name": "jsl"})
查看集合:
> show tables
jsl
刪除集合:
> db.jsl.drop()
true
再查看集合:
show tables
輸出為空壁拉,說(shuō)明刪除成功
插入文檔
所有存在集合中的數(shù)據(jù)都是BSON格式(BSON是 類json的一種二進(jìn)制形式的存儲(chǔ)格式,簡(jiǎn)稱Binary JSON)
插入文檔
MongoDB 使用 insert() 或 save() 方法向集合中插入文檔柏靶,語(yǔ)法如下:
db.COLLECTION_NAME.insert(document)
實(shí)例:
在jsl數(shù)據(jù)庫(kù)中的col表中插入文檔:
> db.col.insert(
title: 'MongoDB ',
description: 'MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫(kù)'
})
col是集合名弃理,如果集合名不存在,就會(huì)自動(dòng)創(chuàng)建一個(gè)屎蜓,并插入文檔痘昌,執(zhí)行下列命令查看是否插入文檔:
> bd.col.find()
{ "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫(kù)" } # 輸出信息
還有另一種方式是一樣的效果:將數(shù)據(jù)定義為一個(gè)變量,將變量插入到數(shù)據(jù)庫(kù)
> document= {title: 'MongoDB 教程',
description: 'MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫(kù)'
};
然后執(zhí)行插入操作:
> db.col.insert(document)
WriteResult({ "nInserted" : 1 }) # 輸出信息
注:db.sol.save(document)命令也可以達(dá)到同樣的效果炬转,save()傳 '_id'字段參數(shù)的話可以完成更新該 '_id'的數(shù)據(jù)辆苔。
更新文檔
MongoDB 使用 update() 和 save() 方法來(lái)更新集合中的文檔。接下來(lái)讓我們?cè)敿?xì)來(lái)看下兩個(gè)函數(shù)的應(yīng)用及其區(qū)別扼劈。
update()方法
update()方法用于更新已存在的文檔 驻啤,語(yǔ)法格式如下:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
參數(shù)說(shuō)明:
- query: update的查詢條件
- update: update的對(duì)象和一些更新的操作符(如$,$inc)
- upsert: 可選,意思是如果不存在update的記錄,是否插入objNew; 默認(rèn)是false.
- multi: 可選,默認(rèn)是false:只更新找到的第一條記錄;如果參數(shù)為true,就是把所有查找到的記錄全部更新
- writeConcern: 可選,拋出異常的級(jí)別.
實(shí)例
在集合col中插入數(shù)據(jù):
>db.col.insert({
name: '張三',
age: 20
})
然后用update()來(lái)更新name:
> db.col.update('name': '我是名字',{$set:{'name':'我是已更新的名字'}})
WriteResult({ "nMatched":1,"nUpserted":0,"nModified":1 }) # 輸出信息
再次輸入命令查看數(shù)據(jù):
> db.col.find()
{ "_id" : ObjectId("5911725e0275fd608c69ed6a"), "name" : "我是已更新的名字" } #輸出信息
可以看得出,我們的名字已經(jīng)被更新.
后面如果加參數(shù),的格式如下
db.col.update('name': '我是名字',{$set:{'name':'我是已更新的名字'}}, {multi:true})
save()方法
語(yǔ)法如下:
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
參數(shù)說(shuō)明:
- document: 文檔數(shù)據(jù).
- writeConcern: 可選,拋出異常的級(jí)別.
實(shí)例
db.col.save({ "_id" : ObjectId("591192d80275fd608c69ed6b"), "name" : "我是來(lái)替換之前名字的名字", "age" : 20 })