mongodb에서 배열 요소를 제거하는 방법은 무엇입니까?
배열 구조는 다음과 같습니다
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
여기에서는 mongo id ( _id
) 및 phone number ( +1786543589455
) 만 알고 문서에서 해당 배열 요소를 모두 제거해야합니다. 즉, 전화 배열의 인덱스 요소가 0 인 전화 번호와 일치하므로 해당 배열 요소를 제거해야합니다.
contact: {
phone: [
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
나는 다음 업데이트 방법으로 시도했다.
collection.update(
{ _id: id, 'contact.phone': '+1786543589455' },
{ $unset: { 'contact.phone.$.number': '+1786543589455'} }
);
그러나 number: +1786543589455
전화 배열의 인덱스 요소가 아닌 내부 배열 객체에서 제거합니다 . pull
성공하지 않고 시도했다 .
mongodb에서 배열 요소를 제거하는 방법은 무엇입니까?
다음 쿼리를 시도하십시오.
collection.update(
{ _id: id },
{ $pull: { 'contact.phone': { number: '+1786543589455' } } }
);
주어진 문서를 찾고 배열 _id
에서 전화 +1786543589455
를 제거합니다 contact.phone
.
당신은 사용할 수 있습니다 $unset
(그것에 설정 배열의 값을 설정 해제하기 위해 null
)하지만, 완전히 제거 할 수 없습니다.
아래 코드는 전화 번호가 '+1786543589455'인 배열에서 전체 객체 요소를 제거합니다.
db.collection.update(
{ _id: id },
{ $pull: { 'contact': { number: '+1786543589455' } } }
);
$ pull을 사용하여 하위 문서를 제거 할 수 있습니다. $ pull 연산자는 기존 배열에서 지정된 조건과 일치하는 값의 모든 인스턴스를 제거합니다.
Collection.update({
_id: parentDocumentId
}, {
$pull: {
subDocument: {
_id: SubDocumentId
}
}
});
주어진 ID에 대해 부모 문서를 찾은 다음 주어진 기준과 일치하는 subDocument에서 요소를 제거합니다.
pull 여기 에 대해 자세히 알아보십시오 .
몽구스에서 : 문서에서 :
하위 문서 배열에서 문서를 제거하기 위해 _id가 일치하는 객체를 전달할 수 있습니다.
contact.phone.pull({ _id: itemId }) // remove
contact.phone.pull(itemId); // this also works
정답은 Leonid Beschastny의 답변을 참조하십시오.
참고 URL : https://stackoverflow.com/questions/16959099/how-to-remove-array-element-in-mongodb
'development' 카테고리의 다른 글
리플렉션을 사용하여 C #에서 개인 읽기 전용 필드를 변경할 수 있습니까? (0) | 2020.07.29 |
---|---|
파이썬에서 raw_input 함수 (0) | 2020.07.29 |
작업 러너 (Gulp, Grunt 등) 및 Bundler (Webpack, Browserify). (0) | 2020.07.29 |
C ++ 11에서 "return {}"문장의 의미는 무엇입니까? (0) | 2020.07.29 |
WPF ListView 선택 해제 (0) | 2020.07.29 |