Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 기존 배열에 요소 추가하는 방법 – $addToSet 연산자 활용 가이드

MongoDB에서 기존 배열에 새로운 요소를 추가하려면 $addToSet 연산자와 함께 update() 메서드를 사용하면 됩니다. $addToSet은 배열에 값을 추가할 때 중복된 값이 이미 존재하지 않는 경우에만 추가한다는 점이 특징입니다.

1. 샘플 컬렉션 생성

먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.

> db.pushElements.insertOne({"Comments":["Good","Awesome","Nice"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd682597924bb85b3f48953")
}

2. 문서 조회하기

find() 메서드를 사용해 컬렉션의 모든 문서를 확인합니다.

> db.pushElements.find().pretty();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{
   "_id" : ObjectId("5cd682597924bb85b3f48953"),
   "Comments" : [
      "Good",
      "Awesome",
      "Nice"
   ]
}

3. 배열에 요소 추가하기

이제 $addToSet 연산자를 사용하여 기존 배열에 새로운 요소를 추가합니다.

> db.pushElements.update(
   {_id:ObjectId("5cd682597924bb85b3f48953")},
   { "$addToSet":{"Comments":"Cool"} },
   upsert=true
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

실행 결과 nModified : 1이 반환되며, 하나의 문서가 성공적으로 수정되었음을 알 수 있습니다.

4. 결과 확인

문서를 다시 한번 조회하여 요소가 정상적으로 추가되었는지 확인해 보겠습니다.

> db.pushElements.find().pretty();

"Cool"이라는 값이 배열 끝에 성공적으로 추가된 것을 확인할 수 있습니다.

{
   "_id" : ObjectId("5cd682597924bb85b3f48953"),
   "Comments" : [
      "Good",
      "Awesome",
      "Nice",
      "Cool"
   ]
}

$addToSet과 $push의 차이점

배열에 요소를 추가할 때 자주 비교되는 연산자로 $push가 있습니다. 두 연산자의 주요 차이는 다음과 같습니다.

  • $addToSet: 배열에 동일한 값이 이미 존재하면 아무 작업도 하지 않습니다. 즉, 중복을 허용하지 않습니다.
  • $push: 중복 여부와 관계없이 항상 배열 끝에 값을 추가합니다.

따라서 댓글 목록처럼 고유한 값만 유지하고 싶은 경우에는 $addToSet을, 단순히 순서대로 값을 누적하고 싶은 경우에는 $push를 사용하는 것이 좋습니다.