Start MongoDB & Shell CRUD

 Pull image

sudo docker pull mongo

Start container
sudo docker run --name mongo -d -p 27017:27017 mongo
c38be4173edc4490e954c1046abe47aadf39c938e2faa188c89aef0cad221e0d

Folder
/data/db

Go to shell, 進這個 shell 之後可以輸入 javascript, 也可以定義 function.
docker exec -it mongo bash
iliao@MacBook-Pro ~ % docker exec -it mongo bash
root@12c0a2efb72c:/# mongo
>

如果沒輸入完整的 javascript command, 可以按三下 enter 之後跳出來
> Math.sin(Math.PI/2)
1
> a =
...
...
>

Create data
// Define movie
> movie = {"title":"A movie", "director": "A director", "year":2020}
{ "title" : "A movie", "director" : "A director", "year" : 2020 }

// Insert a movie
> db.movies.insertOne(movie)
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5f685a71a9ea26aaea91f834")
}

// Query a movie
> db.movies.find().pretty()
{
    "_id" : ObjectId("5f685a71a9ea26aaea91f834"),
    "title" : "A movie",
    "director" : "A director",
    "year" : 2020
}

// 定義第二部電影
> movie2 = {"title":"A movie 2", "director": "A director 2", "year":2020}
{ "title" : "A movie 2", "director" : "A director 2", "year" : 2020 }

// 儲存第二部電影
> db.movies.insertOne(movie2)
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5f685b21a9ea26aaea91f835")
}

// 把電影都列出來
> db.movies.find().pretty()
{
    "_id" : ObjectId("5f685a71a9ea26aaea91f834"),
    "title" : "A movie",
    "director" : "A director",
    "year" : 2020
}
{
    "_id" : ObjectId("5f685b21a9ea26aaea91f835"),
    "title" : "A movie 2",
    "director" : "A director 2",
    "year" : 2020
}

讀一筆資料 READ
> db.movies.findOne()
{
    "_id" : ObjectId("5f685a71a9ea26aaea91f834"),
    "title" : "A movie",
    "director" : "A director",
    "year" : 2020
}

更新一筆資料 UPDATE
// 指定條件: title
// 修改: $set
> db.movies.updateOne({"title":"A movie"}, {$set:{reviews:[], "title":"A movie 3"}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

// 檢查修改結果
> db.movies.find().pretty()
{
    "_id" : ObjectId("5f685a71a9ea26aaea91f834"),
    "title" : "A movie 3",
    "director" : "A director",
    "year" : 2020,
    "reviews" : [ ]
}
{
    "_id" : ObjectId("5f685b21a9ea26aaea91f835"),
    "title" : "A movie 2",
    "director" : "A director 2",
    "year" : 2020
}

Delete a record
> db.movies.deleteOne({"title":"A movie 3"})
{ "acknowledged" : true, "deletedCount" : 1 }
> db.movies.find().pretty()
{
    "_id" : ObjectId("5f685b21a9ea26aaea91f835"),
    "title" : "A movie 2",
    "director" : "A director 2",
    "year" : 2020
}

Delete multiple records
> db.movies.deleteMany({})
{ "acknowledged" : true, "deletedCount" : 1 }
> db.movies.find().pretty()
>

沒有留言:

張貼留言

別名演算法 Alias Method

 題目 每個伺服器支援不同的 TPM (transaction per minute) 當 request 來的時候, 系統需要馬上根據 TPM 的能力隨機找到一個適合的 server. 雖然稱為 "隨機", 但還是需要有 TPM 作為權重. 解法 別名演算法...