iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
Software Development

NoSQL: Not Only SQL系列 第 20

[Day 20] Document Database: 以 MongoDB 為例

  • 分享至 

  • xImage
  •  

建立本機環境

這次一樣使用 Docker 在本機建立相關環境。

Pull Image

取得 mongodb 的 image。

> docker pull mongo

Run Image

將該 image run 起來,指定 port 1235 (或其他你想要的 port 也可以),並命名為 ironman-dynamodb-demo。並在這個階段就先將帳號密碼設定在環境變數中。

因為是練習,所以使用比較簡單的作法,實際開發時請遵照正常的權限設定,可參考官方文件

> docker run -p 1235:27017 --name ironman-mongodb-demo ^
-e MONGO_INITDB_ROOT_USERNAME=demoUser ^
-e MONGO_INITDB_ROOT_PASSWORD=demoPassword mongo

Authenticate

先連線進去,輸入剛剛設定的帳號密碼。這時預設的是 test,接著使用 use admin 切換到 admin 中設定使用者帳號權限,看到從 test > 變為 admin 表示切換成功。

# mongosh --port 27017 -u "demoUser" -p
test> use admin
admin> 

接著建立使用者帳號,並給予 userAdminAnyDatabasereadWriteAnyDatabase權限角色。

因為是練習,所以直接開了一個很高的權限,一般來說不會這樣開。

admin> db.createUser(
  {
    user: "appUser",
    pwd: "appPwd",
    roles: [
      { role: "userAdminAnyDatabase", db: "admin" },
      { role: "readWriteAnyDatabase", db: "admin" }
    ]
  }
)

畫面顯示 ok 表示成功。

{ ok: 1 }

接著關掉連線。

admin> exit

重新以剛剛建立的帳號連線,

# mongosh --port 27017 -u "appUser" -p

輸入剛剛設定的密碼 demoPassword,實際操作畫面上會呈現 * 字號,

Enter password: appPwd

就會成功連線。

建立資料庫

在資料庫不存在時建立一筆資料,系統會自動幫你建立一個資料庫,Collection 也一樣,當Collection不存在就會幫你建立。使用 use demobd 切到不存在的 demodb 資料庫,然後在不存在的 testCollection 建立一筆資料。

test> use demodb
switched to db demodb
demodb> db.testCollection.insertOne( { x: 1 } )

得到成功的回應。

{
  acknowledged: true,
  insertedId: ObjectId("632c6f6bc8b0b05ea2400624")
}

或是透過 db.createCollection("名稱") 來建立 Collection,建立時有許多參數可以設定,更多資訊請見官方文件

demodb> db.createCollection("NetTestCollection2")

得到成功回應。

{ ok: 1 }

可以使用 db.getCollectionNames() 查看已建立的 Collection 名稱,來確認剛剛的操作是否成功。

demodb> db.getCollectionNames()
[ 'NetTestCollection', 'testCollection' ]

上一篇
[Day 19] Document Database: 以 MongoDB 為例
下一篇
[Day 21] Document Database: 以 MongoDB 為例
系列文
NoSQL: Not Only SQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言