06. MongoDB Update Operators Part 3. - $push

이번 포스팅에서는 $push operator에 대해 알아보도록 하겠습니다.

$push operator는 DB에 item을 계속 추가하는 명령어입니다.

우선 설명에 앞서 다음 명령어를 이용하여 데이터를 준비하겠습니다:

use foobar
var user = {"username" : "gchoi", "age" : 37};
db.users.insert(user);

다음과 같은 결과를 확인할 수 있을 것입니다:

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

이제 $push opertor를 통해 "email"을 추가해 보겠습니다:

db.users.update({"username" : "gchoi"}, {$push : {"email" : "gchoi@gmail.com"}});

다음과 같이 "email"이 추가된 것을 볼 수 있을 것입니다:

> db.users.find().pretty()
{
  "_id" : ObjectId("52e3c2e4623bbd008840d66f"),
  "age" : 37,
  "email" : [ "gchoi@gmail.com" ],
  "username" : "gchoi"
}

$push operator를 한 번 더 입력하여 동일한 "email"을 추가하고 결과를 확인하면 다음과 같습니다:

> db.users.find().pretty()
{
  "_id" : ObjectId("52e3c2e4623bbd008840d66f"),
  "age" : 37,
  "email" : [
    "gchoi@gmail.com",
    "gchoi@gmail.com"
  ],
  "username" : "gchoi"
}

결과를 보면, 동일한 "email"이 중복적으로 추가되었음을 확인할 수 있습니다.

즉, $push operator를 사용하면 중복적이더라도 계속적으로 아이템이 추가됩니다. 이렇게 중복적으로 아이템이 추가되는 것을 방지하려면 $addToSet 명령어를 사용합니다.

이 명령어는 다음 포스팅에 이어서 다루도록 하겠습니다.