Node.js

Mongoose array (몽구스 배열)

마샤와 곰 2023. 9. 12. 11:19

간단하게 정리한 몽구스에서 배열 데이터를 관리하는 방법 입니다.

* 샘플 데이터 구조

#도큐먼트 구조
## 1번데이터
{
  key : 'a',
  group : [
    { id :'aaa', number : '1234'},
    { id :'bbb', number : '5678'}
  ]
}

## 2번데이터
{
  key : 'b',
  group : [
    { id :'ccc', number : '1234'},
    { id :'ddd', number : '5678'}
  ]
}

## 3번데이터
{
  key : 'c',
  group : [
    { id :'eee', number : '1234'},
    { id :'fff', number : '5678'}
  ]
}

 

#1. 배열 데이터 조회 : group 필드의 배열 값에서 id가 'aaa' 인 것 찾아오기

몽구스모델
    .find({ group: { $elemMatch: { id: 'aaa' } } })
    .exec()
    .then((arg) => {
        console.log(arg);
    });

 

#2. 배열 데이터 추가 : key 값이 'b' 인 곳에 group 필드의 배열에 값을 추가하기

const 새로들어갈데이터 = { id: 'hhh', number: '1212' };

몽구스모델
    .updateOne({ key: 'a' }, { $addToSet: { group: 새로들어갈데이터 } })  //group 필드에 추가
    .exec()
    .then((arg) => {
        console.log(arg);
    });

 

#3. 배열 데이터 삭제 : key 값이 'b' 이면서 group 필드 배열에서 id 값이 'ddd' 인 것 삭제하기

몽구스모델
    .updateOne({ key: 'a' }, { $pull: { group: { id : 'ddd'} } }) //pull 을 통한 조건 & 배열 삭제
    .exec()
    .then((arg) => {
        console.log(arg);
    });

 

#4. 배열 데이터 수정 : key 값이 'b' 이면서 group 필드 배열에서 id 값이 'ddd' 인 항목의 number 값을 5로 변경

몽구스모델
    .updateOne(
        { key: 'a', 'group.id' : 'ddd' }, 
        { $set : { 'group.$.number' : '5' } }
    ) 
    .exec()
    .then((arg) => {
        console.log(arg);
    });
반응형