[SPRING] Spring + Mongo에서 문서 배열에서 항목 제거
SPRINGSpring + Mongo에서 문서 배열에서 항목 제거
나는 mongodb에서 이와 같은 문서 모음을 가지고있다.
"_id" : ObjectId("592bc37c339e7a23788b4c7c"),
"trips" : [
{
"tripGcsId" : "5937f86e339e7a2a58ac3186",
"tripCounter" : NumberLong(1283),
"tripRef" : "hjkhjk"
},
{
"tripGcsId" : "5937f914339e7a2a58ac318b",
"tripCounter" : NumberLong(1284),
"tripRef" : "fjh"
}
]
및 서버 측의 메소드 (Spring + Mongo) :
public List<String> removeTripObject( List<String> tripIds )
{
Query query = Query.query( Criteria.where( "trips" ).elemMatch( Criteria.where( "tripGcsId" ).in( tripIds ) ) );
Update update = new Update().pullAll( "trips.tripGcsId", new Object[] { tripIds } );
getMongoTemplate().updateMulti( query, update, "ORDER" );
return updatedOrders;
}
tripIds 매개 변수는 trip 배열에서 제거 할 tripGcsIds의 목록입니다. 위의 방법은 다음과 같은 오류 메시지를 표시합니다. 오류 코드 16837로 쓰기가 실패했으며 'trips.tripGcsId의 부품을 사용하여 요소를 통과 할 수 없습니다'라는 오류 메시지가 표시됩니다.
$ 연산자를 사용하려고하면 다음과 같이 다른 답변이 표시됩니다.
public List<String> removeTripObject( List<String> tripIds )
{
Query query = Query.query( Criteria.where( "trips" ).elemMatch( Criteria.where( "tripGcsId" ).in( tripIds ) ) );
Update update = new Update().pullAll( "trips.$.tripGcsId", new Object[] { tripIds } );
getMongoTemplate().updateMulti( query, update, "ORDER" );
return updatedOrders;
}
이 오류가 발생했습니다 : 오류 코드 16837 및 '$ pullAll 배열에만 적용 할 수 있습니다.'오류 메시지와 함께 쓰기가 실패했습니다.
이 pullAll 명령은 서버 측에서 어떻게 보이는지 잘 모르겠습니다.
해결법
-
==============================
1.임베디드 배열에서 일치하는 모든 행을 일치시키고 삭제하기 위해 쿼리를 취하는 $ pull update 연산자를 사용해야합니다.
임베디드 배열에서 일치하는 모든 행을 일치시키고 삭제하기 위해 쿼리를 취하는 $ pull update 연산자를 사용해야합니다.
좋아요.
public List<String> removeTripObject( List<String> tripIds ) { Query query = Query.query( Criteria.where( "tripGcsId" ).in( tripIds ) ); Update update = new Update().pull("trips", query ); getMongoTemplate().updateMulti( new Query(), update, "ORDER" ); return updatedOrders; }
참고
https://docs.mongodb.com/manual/reference/operator/update/pull/#remove-items-from-an-array-of-documents
from https://stackoverflow.com/questions/44413686/remove-items-from-array-of-documents-in-springmongo by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 제출 봄에 자식 개체 바인딩 mvc (0) | 2019.05.26 |
---|---|
[SPRING] 봄 데이터 나머지를 통해 합성 테이블에 데이터를 저장할 수 없습니다 json post (0) | 2019.05.26 |
[SPRING] Spring -XD 스트림 배포 실패 (0) | 2019.05.26 |
[SPRING] 속도 널 포인트 예외 (0) | 2019.05.26 |
[SPRING] ThreadPoolTaskExecutor로부터 호출 가능해, 또는 Runnable를 Callable에 캐스트 할 수있다 (0) | 2019.05.26 |