MongoDB에서 $push와 $addToSet의 차이점

Tahseen Tauseef 2024년2월15일
  1. MongoDB의 연산자
  2. MongoDB의 $push 연산자
  3. MongoDB의 $addToSet
MongoDB에서 $push와 $addToSet의 차이점

이 기사에서는 MongoDB에 어떤 연산자가 있는지 설명합니다. $push$addToSet 연산자는 무엇을 위해 사용됩니까?

또한 이 두 연산자의 차이점은 코드 세그먼트로 제공됩니다. 이 문서에서는 다음 항목에 대해 설명합니다.

  1. MongoDB의 연산자
  2. MongoDB의 $push
  3. MongoDB의 $addToSet

MongoDB의 연산자

연산자는 수학적 또는 논리적 연산을 수행하도록 컴파일러나 해석기에 알리는 특수 기호 또는 키워드입니다.

쿼리 연산자는 개발자가 응용 프로그램과 일치하는 데이터 세트와 상호 작용하는 복잡한 쿼리를 만들 수 있도록 하여 MongoDB의 기능을 향상시킵니다.

MongoDB의 다양한 유형의 연산자는 아래에 설명되어 있습니다.

  1. 쿼리 및 프로젝션 연산자 - 쿼리 연산자는 데이터베이스에서 데이터를 검색하는 데 도움이 되는 반면 프로젝션 연산자는 데이터 표시 방법을 변경합니다.
  2. 업데이트 연산자 - 업데이트 연산자를 사용하면 데이터를 변경하거나 데이터베이스에 추가할 수 있습니다.
  3. 집계 파이프라인 단계 - 집계 파이프라인에 사용 가능한 집계 단계.
  4. 집계 파이프라인 연산자 - 집계 파이프라인 작업에는 파이프라인 단계에서 문서를 정의하고 조작하는 데 사용할 수 있는 연산자 모음이 있습니다.
  5. 쿼리 수정자 - 쿼리 수정자는 쿼리 실행 방법을 결정합니다.

MongoDB의 $push 연산자

MongoDB의 $push 연산자는 주어진 값을 배열에 첨부하는 데 사용됩니다. 업데이트 연산자 유형은 $push 연산자입니다.

업데이트할 문서에 지정된 필드가 없으면 $push 연산자는 해당 요소를 지정된 값과 함께 새 필드로 추가합니다. 업데이트 필드가 배열 유형이 아닌 경우 작업이 실패했습니다.

값이 배열인 경우 $push 연산자는 업데이트할 때 전체 배열을 단일 요소로 추가합니다. 각 값 요소를 독립적으로 추가하려면 $push 연산자를 $each 한정자와 함께 사용하십시오.

통사론:

db.collection.update( <query>,{ $push: { <field>: <value> } })

다음 데이터베이스 컬렉션은 모든 예제에서 사용됩니다.

샘플 수집:

db={
  "student": [
    {
      "_id": 1,
      "sem": 1,
      "subjects": [
        "phys",
        "chem",
        "maths",
        "gkn",
        "stat",
        "astro"
      ],
      "achieve": [
        70,
        87,
        90,
        90,
        65,
        81
      ]
    }
  ]
}

MongoDB $push 연산자의 예

subjects 조건이 "maths"일 때 달성된 배열 필드에 95를 추가하려면 아래 MongoDB 명령을 사용할 수 있습니다.

db.student.update( { "subjects" : "maths" },{ $push: { "achieve": 95 } });

앞의 예에서 설명한 기준이 이 작업과 일치하기 때문에 수행된 배열에 값 95가 추가됩니다.

새로 업데이트된 문서를 보려면:

db.student.find().pretty();

위에 주어진 쿼리의 출력은 이 스크린샷에서 볼 수 있습니다.

푸시 연산자 mongodb

필드가 배열이 아닌 경우 MongoDB $push의 예

배열 유형 필드가 아닌 sem 열에 2를 추가하려면 아래 MongoDB 명령을 사용할 수 있습니다.

db.student.update( { "subjects" : "maths" },{ $push: { "sem": 2 } });

위의 예에서 sem 필드는 배열 유형이 아니므로 작업이 실패하고 다음 결과가 생성됩니다.

Cannot apply $push/$push All modifier to non-array

$each 한정자를 사용하는 MongoDB $push의 예

조건 subjects"maths"인 문서화된 학생을 위해 수행된 배열에 많은 항목 또는 하나 이상의 요소(77,49,83)를 추가하려는 경우 아래 MongoDB 명령을 사용할 수 있습니다.

db.student.update( { "subjects" : "maths" },{ $push: { "achieve": {$each : [77,49,83 ]} } });

$each 한정자는 위의 예에서 조건 주제 "maths"와 일치하는 배열 달성에 여러 항목 77,49,83을 추가하는 데 사용되었습니다.

새로 업데이트된 문서를 보려면:

db.student.find().pretty();

위에 주어진 쿼리의 출력은 이 스크린샷에서 볼 수 있습니다.

각 푸시 연산자

MongoDB의 $addToSet

$addToSet 연산자는 값이 배열에 아직 존재하지 않는 경우에만 배열에 값을 추가하거나 추가합니다. 값이 이미 배열에 있는 경우 $addToSet은 변경하지 않고 동일한 배열을 반환합니다.

$addToSet 연산자는 배열이 업데이트될 때 배열에 중복 항목이 없도록 합니다. 그러나 디스플레이의 요소 순서는 값을 추가한 후 수정할 수 있습니다.

통사론:

db.collection.update( { <field>: <value> }, { $addToSet: { <field>: <addition> } } );

위에 사용된 컬렉션:

 { "_id" : 1, "sem" : 1, "achieve" : [  80,  70,  90 ] }

값을 추가하기 위한 $addToSet의 예

배열에 값 92를 추가하려면 아래 MongoDB 명령을 사용할 수 있습니다.

db.student.update( { "sem": 1}, { $addToSet: { "achieve": 92 } } );

앞의 코드는 배열 필드 달성에 92를 추가합니다.

새로 업데이트된 문서를 보려면:

db.student.find().pretty();

명령 출력:

{ "_id" : 1, "achieve" : [ 70, 80, 90, 92 ], "sem" : 1 }

$each 한정자를 사용하여 여러 값을 추가하는 $addToSet의 예

다음 MongoDB 명령은 배열 필드 달성에 숫자 10과 11을 추가할 수 있습니다.

db.student.update( { "sem": 1}, { $addToSet: { "achieve":{$each:[10,11]}}});

위의 예에서 숫자 10과 11은 $each 수정자를 사용하여 얻은 배열 필드에 첨부되었습니다.

새로 업데이트된 문서를 보려면:

db.student.find().pretty();

위에 주어진 쿼리의 출력은 이 스크린샷에서 볼 수 있습니다.

addToSet 연산자

관련 문장 - MongoDB Operator