포시코딩

[Mongoose] Object Array 내 데이터 변경 (update values in array of objects) 본문

MongoDB

[Mongoose] Object Array 내 데이터 변경 (update values in array of objects)

포시 2022. 11. 28. 11:47
728x90
{
    _id: '1',
    members: [
        {
            _id: '0001',
            id: 'Sam',
            rank: 0
        },
        {
            _id: '0002',
            id: 'Kim',
            rank: 1
        }
    ], 
    name: '테스트그룹'
}

Collection의 이름이 Target이고 0002의 랭크를 5로 변경하고 싶을 때, 

(Mongoose model을 target으로 만든 후 라고 가정)

Target.updateOne(
    { 
        _id: '1', 
        members: {
            $elemMatch: {
                _id: '0002'
            }
        }
        // 또는 아래와 같이 간단하게 표현 가능
        // 'members._id': '0002'
    }, 
    {
        $set: {
            'members.$.rank': 5
        }
    }, (err, data) => {
        // 
    }
);
728x90