>데이터 베이스 >몽고DB >MongoDB에서 인덱스로 배열 요소를 삭제하는 방법은 무엇입니까?

MongoDB에서 인덱스로 배열 요소를 삭제하는 방법은 무엇입니까?

PHPz
PHPz앞으로
2023-09-08 12:17:02952검색

如何在 MongoDB 中通过索引删除数组元素?

다음 두 단계를 사용하여 인덱스별로 배열 요소를 제거할 수 있습니다. -

첫 번째 단계는 다음과 같습니다. -

db.yourCollectionName.update({}, {$unset : {"yourArrayFieldName.yourIndexValue" : 1 }});

위 구문에서는 "yourIndexValue" 위치에 null 값이 배치됩니다. 그런 다음 배열 요소에서 제거하려면 배열 필드에서 null 값을 추출해야 합니다.

두 번째 단계는 다음과 같습니다. -

db.yourCollectionName.update({}, {$pull : {"yourArrayFieldName" : null}});

구문을 구현하기 위해 문서가 포함된 컬렉션을 만들어 보겠습니다. 문서를 사용하여 컬렉션을 생성하는 쿼리는 다음과 같습니다.

> db.removeArrayElementByItsIndexDemo.insertOne({"InstructorName":"David",
   "InstructorAge":28,"InstructorSubject":["MongoDB","MySQL","Java","SQL Server","PL/SQL"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8abbfc6cea1f28b7aa0803")
}

find() 메소드를 사용하여 컬렉션에 있는 모든 문서를 표시합니다. 쿼리는 다음과 같습니다 -

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

다음은 출력입니다. -

{
   "_id" : ObjectId("5c8abbfc6cea1f28b7aa0803"),
   "InstructorName" : "David",
   "InstructorAge" : 28,
   "InstructorSubject" : [
      "MongoDB",
      "MySQL",
      "Java",
      "SQL Server",
      "PL/SQL"
   ]
}

인덱스별로 배열 요소를 삭제하는 쿼리입니다.

1단계 - 쿼리는 다음과 같습니다. -

> db.removeArrayElementByItsIndexDemo.update({}, {$unset : {"InstructorSubject.2" : 1 }});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

2단계 - 쿼리는 다음과 같습니다. -

> db.removeArrayElementByItsIndexDemo.update({}, {$pull : {"InstructorSubject" : null}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

배열 요소 "Java"가 삭제되었는지 확인해 보겠습니다. 쿼리는 다음과 같습니다 -

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

다음은 출력입니다. -

{
   "_id" : ObjectId("5c8abbfc6cea1f28b7aa0803"),
   "InstructorName" : "David",
   "InstructorAge" : 28,
   "InstructorSubject" : [
      "MongoDB",
      "MySQL",
      "SQL Server",
      "PL/SQL"
   ]
}

샘플 출력을 보면 배열 요소 "Java"가 완전히 제거되었습니다.

위 내용은 MongoDB에서 인덱스로 배열 요소를 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제