Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

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

<시간/>

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

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

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

위의 구문은 'yourIndexValue' 위치에 null 값을 넣습니다. 그런 다음 배열 요소에서 제거하려면 배열 필드에서 null 값을 가져와야 합니다.

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

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

구문을 구현하기 위해 문서로 컬렉션을 생성해 보겠습니다. 문서로 컬렉션을 생성하는 쿼리는 다음과 같습니다 -

> db.removeArrayElementByItsIndexDemo.insertOne({"강사명":"데이비드", "강사제":28,"강사제":["몽고DB","MySQL","자바","SQL 서버","PL/ SQL"]});{ "승인됨" :true, "insertedId" :ObjectId("5c8abbfc6cea1f28b7aa0803")}

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

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

다음은 출력입니다 -

{ "_id":ObjectId("5c8abbfc6cea1f28b7aa0803"), "InstructorName":"David", "InstructorAge":28, "InstructorSubject":[ "MongoDB", "MySQL", "자바", "SQL 서버" , "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 서버", "PL/ SQL" ]}

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