MongoDB
首先下載安裝MongoDB,接下來 安裝MongoDB driver,使用npm install mongodb指令。找到mongodb的安裝目錄(e.g. C:\Program Files\MongoDB\Server\3.6\bin),執行mongod.ext(打mongod)來啟動mongodb,若是連結失敗,d可能需要檢查一下是否有這個目錄(根據連線失敗訊息)C:\Data\db,再啟動一次(mongod)。>> node7_1_mongodb.js
跟之前一樣執行node node7_1_mongodb.js,出現Database created!字樣,成功建立一個database名為mydb。
Collection
Collection就是一個表格的意思,使用createCollection()方法建立。
>> node7_2_collection.js
成功建立一個collection。
insert
增加一筆資料進入collection。
>> node7_3_insert.js
會出現E11000 duplicate key error index這個錯誤訊息然後斷線,雖然還是insert成功..........
find
findOne(query, callback)會傳回第一筆找到的資料,query是搜尋條件,下例因為給空物件,所以會傳回第一筆資料。。
>> node7_4_find.js
若要尋找特定條件資料,使用find(query).toArray(callback)方法(toArray是因為可能找到不只一筆資料),若要限制傳回數量可以加上limit(n)例如find(query).limit(5).toArray(callback)。
>> node7_5_find.js
query的內容可以使用Regular Expression,例如使用query={name:/M./};來找到name是M開頭的資料。
Update
- 使用updateOne(query, newvalues, callback)來更新一筆資料(如果找到多筆資料,只會更新第一筆)
- 使用updateMany(query, newvalues, callback)來更新多筆資料。
- 使用{$set:{field:newvalue}}語法來更新其中項目。
若使用updateMany則會更新所以符合的資料。
sort
可以使用find(query).sort({item:1}).toArray(callback)來排序,使用find(query)可以先找到需要的資料,若無query則為全部資料。sort({item:1})中的1若改為-1則為降冪排列,否則為升冪排列。
>> node7_7_sort.js
delete
刪除資料可使用deleteOne(query, callback)與deleltMany(query, callback)來刪除一或多筆資料。
>> node7_8_deleteff.js
drop collection
- 若要刪除collection,可以使用dropCollection,e.g. mydb.dropCollection("players", callback),callback第二個參數傳回boolean。
- 也可使用drop來刪除collection,e.g. mydb.collection("players").drop(callback),callback第二個參數傳回boolean。
mongo shell
之前的操作也可以直接在mongo shell執行,在連線成功同時,再開啟一個DOS視窗,一樣到mongodb的安裝目錄執行mongo.ext(打mongo)。
- help: 查看指令
- show dbs: 查看資料庫
- use dbname: 換到dbname這個database,e.g. use mydb
- show collections: 查看collection列表
- db.collection.help(): 查看collection相關指令,e.g. db.players.help()
- db.collection.find(): 查看collection內資料,e.g. db.players.find()
- db.collection.insert(obj): 增加一筆資料,e.g. db.players.insert({name:"Tom", occupation:"Warrior"})
- db.collection.updateOne(query, newvalue): 更新一筆資料,e.g. db.players.updateOne({name:"Mary"}, {$set:{occupation:"Paladin"}})
- db.collection.deleteOne(query): 刪除一筆資料,e.g. db.players.deleteOne({name: "Tom"})
- db.collection.drop(): 刪除collection