DB/MongoDB

[mongo] 배열 데이터 삭제

벨포트조던 2020. 9. 16.
반응형

아래 예제를 보면 players 에 배열이 있다.

해당 배열중 특정 조건 값을 삭제하고싶을때

(특정 json가 아닌, 전체 데이터중 배열 내부 값 검색후 삭제) 사용한다.

 

예를들어 배열내부의 "_id" : "eeecab6d-9bd6-4c61-b9f6-835ea33a0798" 로 검색하면 여러 로우가 나올 수 있다.

모든 로우의 내부배열 안의 데이터를 삭제시 사용한다.

 

다만 속도문제로, 배열 내부의 _id에 index를 걸어야 한다.

 

 

json포맷 예제 

{ 
    "_id" : ObjectId("5f473d9a956ee3a780ce007e"), 
    "userno" : NumberInt(30001124), 
    "Players" : [
        {
            "_id" : "7034b0c5-ad48-451b-b420-7dde25e606c6", 
            "DeviceTypeId" : "2", 
            "IsRegistered" : "Y", 
            "RegisteredDate" : NumberLong(1600136535), 
            "Profile" : NumberInt(0)
        }, 
        {
            "_id" : "895848d4-300e-466c-a377-b7868f9a593c", 
            "DeviceTypeId" : "4", 
            "IsRegistered" : "Y", 
            "RegisteredDate" : NumberLong(1599528662), 
            "Profile" : NumberInt(0)
        }, 
        {
            "_id" : "71395cb6-3f4a-4dce-a636-53a889fca34d", 
            "DeviceTypeId" : "4", 
            "IsRegistered" : "N", 
            "RegisteredDate" : NumberLong(1599552432), 
            "Profile" : NumberInt(0)
        }, 
        {
            "_id" : "eeecab6d-9bd6-4c61-b9f6-835ea33a0798", 
            "DeviceTypeId" : "4", 
            "IsRegistered" : "Y", 
            "RegisteredDate" : NumberLong(1600152641), 
            "Profile" : NumberInt(0)
        }
    ]
}

 

 

 

삭제쿼리

db.getCollection("pushuser").update(
    { "Players" : {$elemMatch: { _id: "ff6f938d-9496-4095-8749-02df8653db7b"} }   },
    { $pull: { "Players" : { "_id": "ff6f938d-9496-4095-8749-02df8653db7b"} } }
,    false,true
);

 

참고

배열 수정연산자

www.zerocho.com/category/MongoDB/post/57a46d287c4a5115004e97eb

semantics.kr/%EB%AA%BD%EA%B3%A0db%EC%9D%98-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0-update-documents-in-mongodb/

www.tutorialspoint.com/how-to-remove-object-from-array-in-mongodb

 

중요

www.it-swarm-ko.tech/ko/arrays/mongodb%ec%97%90%ec%84%9c-%ec%97%ac%eb%9f%ac-%eb%b0%b0%ec%97%b4-%ec%9a%94%ec%86%8c%eb%a5%bc-%ec%97%85%eb%8d%b0%ec%9d%b4%ed%8a%b8%ed%95%98%eb%8a%94-%eb%b0%a9%eb%b2%95/970307186/

 

 

반응형

댓글