Mongo DB 리스트 데이터 업데이트

강정우·2023년 2월 26일
0

DB

목록 보기
30/30
  • 프로젝트를 진행함에 있어 client 사이드로부터 데이터를 list로 전달받아 이를 한큐에 업데이트하고 싶을 경우가 있다.

  • 이때 데이터가 db에 존재하면 update 없다면 insert를 하고싶다면 매우 간편한 방법이 있다.

1. 무지성 for문

  • 어떠한 반복문 보다 가장 빠른 성능을 제공하는 일반 for문을 사용하면 된다.
...

for(let i=0; i<data.length; i++){
  const result = await postItCollection.updateMany({_id: new ObjectId(data[i].id)}, {$set : {
    pinned:data[i].pinned,
    style:data[i].style,
    userId:data[i].userId,
    content:data[i].content,
    degree:data[i].degree,
    color:data[i].color,
    width:data[i].width,
    height:data[i].height,
    positionX:data[i].positionX,
    positionY:data[i].positionY,
    positionZ:data[i].positionZ,
  }}, {upsert: true});
}
client.close();
res.status(201).json({message: "success"})
  • 위 코드는 내가 작성한 api의 일부를 발췌했다.
  • 위의 postItCollection은 const postItCollection = db.collection("fontData"); 로 그냥 가져왔다.

2. findByIdAndUpdate() 매서드 쓰기

더욱 더 간단하게 사용가능하다.

async function handler(req, res) {
  if (req.method === 'POST') {
    const data = req.body;
    const client = await MongoClient.connect('mongodb+srv://URL');
    const db = client.db();
    const postItCollection = db.collection('tableData');
    for (const d of data) {
      await postItCollection.findByIdAndUpdate(new ObjectId(d.id), d, {
        upsert: true,
      });
    }
    client.close();
    res.status(201).json({ message: 'success' });
  }
}
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글