接續昨天的進度,現在已經建立好本機環境了,就開始練習基本操作吧!
首先先連進Container,並以昨天建立好的帳號與資料庫連線。
> docker exec -ti ironman-mongodb-demo bash
# mongosh --port 27017 -u "appUser" -p
(輸入密碼)
test>
接著切換到昨天建立的 demodb
資料庫。
test> use demodb
demodb>
透過 db.createCollection("名稱")
來建立 Collection。建立時有許多參數可以設定,如果有要設定參數的話要多帶第二個參數 db.createCollection("名稱", 設定)
。
demodb> db.createCollection("defaultSettingCollection")
操作成功會得到 ok
。
{ ok: 1 }
可以使用 db.getCollectionNames() 查看已建立的 Collection 名稱,來確認剛剛的操作是否成功。
demodb> db.getCollectionNames()
[ 'defaultSettingCollection' ]
建好 Collection 就可以開始往裡面新增 Document 了,使用db.Collection名稱.insert(你的Document)
。MongoDB 的 Document 都有一個作為識別的 _id
,如果你的 Document 中包含這個欄位,資料庫使用你指定的值,若你沒有提供這個欄位,資料庫會自行生產一個不重複的值作為 _id
。
新增一筆不指定 ID 的 Document,
demodb> db.defaultSettingCollection.insertOne({"name":"item1","price":23.1})
成功會回傳 ack 為 true,以及作為識別的 ID。
{
acknowledged: true,
insertedId: ObjectId("632dc0969060f811b94ccab5")
}
新增一筆指定 ID 的 Document,
demodb> db.defaultSettingCollection.insertOne({"_id": "custId_1", "name":"item1","price":23.1})
成功的回傳就會看到這邊的 insertedId
是剛剛指定在 Document 中的 custId_1
。
{ acknowledged: true, insertedId: 'custId_1' }
Collection 中有 Document 後,就可以針對該 Document 進行修改。使用 db.Collection名稱.updateOne(過濾條件, 修改內容)
進行修改。
demodb> db.defaultSettingCollection.updateOne(
{ "_id":ObjectId("632dc0969060f811b94ccab5") },
{ $set: { "price":15 }}
)
得到成功的結果,裡面會包含異動 Document 數量的統計。
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
接著把剛剛建的兩筆資料刪除其中一筆,使用 db.Collection名稱.deleteOne(過濾條件)
進行操作。
demodb> db.defaultSettingCollection.deleteOne(
{ "_id":ObjectId("632dc0969060f811b94ccab5") }
)
得到成功的結果,裡面會包含刪除的 Document 數量。
{ acknowledged: true, deletedCount: 1 }
透過 db.Collection名稱.find()
列出目前 Collection 中所有的 Document。
demodb> db.defaultSettingCollection.find()
這時結果應該剩下一筆資料。
[ { _id: 'custId_1', name: 'item1', price: 23.1 } ]
如果有查詢條件,可以帶在參數中 db.Collection名稱.find(過濾條件)
,
dbmodb> db.defaultSettingCollection.find({ "_id":"custId_1" })
得到查詢結果。
[ { _id: 'custId_1', name: 'item1', price: 23.1 } ]
也可以使用非 _id
欄位進行查詢,
dbmodb> db.defaultSettingCollection.find({ "price":23.1 })
得到查詢結果。
[ { _id: 'custId_1', name: 'item1', price: 23.1 } ]
如果查詢不到結果,
dbmodb> db.defaultSettingCollection.find({ "name":"not exist name" })
得到的會是空白。