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

MongoDB에서 $push 연산자로 배열에 새 항목을 추가하는 방법

MongoDB에서 기존 문서의 배열 필드에 새 항목을 추가하려면 $push 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 컬렉션 생성부터 항목 추가, 결과 확인까지 단계별로 살펴보겠습니다.

1. 예제용 컬렉션 생성하기

먼저 insertOne() 메서드를 사용해 학생 정보가 담긴 문서 3개를 updateDemo 컬렉션에 삽입합니다. 각 문서는 학생 이름(StudentName)과 주요 과목 배열(StudentCoreSubject)로 구성되어 있습니다.

> db.updateDemo.insertOne({"StudentName":"Larry","StudentCoreSubject":["Java","C"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c98ba78330fd0aa0d2fe4c9")
}
> db.updateDemo.insertOne({"StudentName":"Robert","StudentCoreSubject":["C++","MongoDB"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c98ba8b330fd0aa0d2fe4ca")
}
> db.updateDemo.insertOne({"StudentName":"Chris","StudentCoreSubject":["Python"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c98ba9b330fd0aa0d2fe4cb")
}

2. 저장된 문서 조회하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다. pretty()를 함께 사용하면 결과를 보기 좋게 정렬된 형태로 출력합니다.

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

위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

{
   "_id" : ObjectId("5c98ba78330fd0aa0d2fe4c9"),
   "StudentName" : "Larry",
   "StudentCoreSubject" : [
      "Java",
      "C"
   ]
}
{
   "_id" : ObjectId("5c98ba8b330fd0aa0d2fe4ca"),
   "StudentName" : "Robert",
   "StudentCoreSubject" : [
      "C++",
      "MongoDB"
   ]
}
{
   "_id" : ObjectId("5c98ba9b330fd0aa0d2fe4cb"),
   "StudentName" : "Chris",
   "StudentCoreSubject" : [
      "Python"
   ]
}

3. $push 연산자로 배열에 새 항목 추가하기

이제 $push 연산자를 사용해 특정 문서의 배열에 새 과목인 "MySQL"을 추가해 보겠습니다. update() 메서드의 첫 번째 인수로 대상 문서를 찾는 조건(여기서는 _id)을 지정하고, 두 번째 인수에 $push 업데이트 내용을 작성합니다.

> db.updateDemo.update(
   { _id: ObjectId("5c98ba78330fd0aa0d2fe4c9") },
   { $push: { "StudentCoreSubject": "MySQL" } }
);
Updated 1 existing record(s) in 2ms
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

실행 결과의 nModified : 1은 하나의 문서가 성공적으로 수정되었음을 의미합니다.

4. 업데이트 결과 확인하기

다시 find() 메서드를 실행해 항목이 실제로 배열에 삽입되었는지 확인합니다.

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

출력 결과를 보면 ObjectId가 5c98ba78330fd0aa0d2fe4c9인 Larry의 문서에 "MySQL"이 성공적으로 추가된 것을 확인할 수 있습니다.

{
   "_id" : ObjectId("5c98ba78330fd0aa0d2fe4c9"),
   "StudentName" : "Larry",
   "StudentCoreSubject" : [
      "Java",
      "C",
      "MySQL"
   ]
}
{
   "_id" : ObjectId("5c98ba8b330fd0aa0d2fe4ca"),
   "StudentName" : "Robert",
   "StudentCoreSubject" : [
      "C++",
      "MongoDB"
   ]
}
{
   "_id" : ObjectId("5c98ba9b330fd0aa0d2fe4cb"),
   "StudentName" : "Chris",
   "StudentCoreSubject" : [
      "Python"
   ]
}

참고: 중복 없이 항목을 추가하려면?

$push는 동일한 값이 이미 배열에 있더라도 그대로 추가합니다. 만약 중복 값을 허용하지 않고 싶다면 $addToSet 연산자를 사용하는 것이 좋습니다. 또한 최신 MongoDB 버전에서는 update() 대신 updateOne()이나 updateMany() 사용이 권장됩니다.