Skip to content

이번 포스팅에서는 $set$unset operator를 이용하여 도큐먼트를 업데이트 하는 방법에 대하여 알아보도록 하겠습니다.


$set

$set operator는 해당 key가 존재할 경우 아이템을 새로 추가하거나 또는 해당 key가 존재하지 않는다면 새로 추가합니다.

우선 아래와 같이 데이터 준비를 준비합니다:

// drop the current database
db.dropDatabase()

// define webpage1
var user1 = {
  "username" : "gchoi",
  "age" : 37,
  "sex" : "male"
}

// insert items into DB
db.users.insert(user1)
db.users.find()

_id를 제외하고는 다음과 같은 아이템들이 출력될 것입니다.

> db.users.find().pretty()
{
        "_id" : ObjectId("5fa7c4430a2aa59573a4d1a5"),
        "username" : "gchoi",
        "age" : 37,
        "sex" : "male"
}

이제 favorite food key 생성합니다:

// update(create "favorite food" key)
db.users.update_one(
  {"username" : "gchoi"},
  {"$set" : {"favorite food" : "김치볶음밥"}}
)

아래와 같이 favorite food 아이템이 추가되었음을 확인할 수 있을 것입니다:

> db.users.find()
> db.users.find().pretty()
{
        "_id" : ObjectId("5fa7c4430a2aa59573a4d1a5"),
        "username" : "gchoi",
        "age" : 37,
        "sex" : "male",
        "favorite food" : "김치볶음밥"
}

favorite food key를 array 형태로 입력할 수도 있습니다:

db.users.update_one(
  {"username" : "gchoi"},
  {"$set" : {"favorite food" : ["돼지갈비", "삼겹살", "된장찌개"]}}
)

array 형태의 favorite food 아이템이 출력됩니다:

> db.users.find()
{
  "_id" : ObjectId("5fa7c4430a2aa59573a4d1a5"),
  "username" : "gchoi",
  "age" : 37,
  "sex" : "male",
  "favorite food" : [
    "돼지갈비",
    "삼겹살",
    "된장찌개"
  ]
}

$unset

이제 $unset operator를 이용하여 favorite food key를 제거해 보겠습니다.

// remove "favorite food"
db.users.update_one(
  {"username" : "gchoi"},
  {"$unset" : {"favorite food" : 1}}
)

결과를 출력을 해보면 favorite food key가 제거되었음을 확인하실 수 있습니다:

> db.users.find()
{
  "_id" : ObjectId("52dbdd7aa1c05d0be00a4b63"),
  "age" : 37,
  "sex" : "male",
  "username" : "gchoi"
}