mongodbmongodb deletemongodb delete methodmongodb deleteOnemongodb deleteMany

MongoDB 문서 삭제 방법 (deleteOne, deleteMany)

KUKJIN LEE
KUKJIN LEE
2024년 10월 17일
202

MongoDB에서 문서를 삭제하려면 deleteOne()deleteMany() 메서드를 사용합니다.

 

1. deleteOne()

deleteOne()은 조건에 맞는 첫 번째 문서를 삭제하는 메서드입니다.

db.users.deleteOne({ name: 'Jin' });

users라는 collection에서 name 필드가 Jin 첫 문서를 삭제합니다.

 

2. deleteMany()

deleteMany()는 조건에 맞는 모든 문서를 삭제하는 메서드입니다.

db.users.deleteMany({ status: 'human' });

users collection에서 status가 human 문서를 모두 삭제합니다.

 

클라이언트에서 문서 삭제 요청 처리하기

사용자가 입력한 title을 기반으로 문서를 삭제 요청합니다.

'use client';

import { useState } from 'react';

export default function Home() {
  const [title, setTitle] = useState('');
  const [message, setMessage] = useState('');

  const handleDelete = async (e: React.FormEvent) => {
    e.preventDefault();
    try {
      const response = await fetch(`/api/delete?title=${title}`, {
        method: 'DELETE',
      });
      const result = await response.json();
      if (result.success) {
        setMessage('문서가 성공적으로 삭제되었습니다.');
      } else {
        setMessage(`오류 발생: ${result.error}`);
      }
    } catch (error) {
      setMessage(`오류 발생: ${error.message}`);
    }
  };

  return (
    <div className="p-8">
      <h1 className="text-2xl mb-4">문서 삭제</h1>
      <form onSubmit={handleDelete} className="space-y-4">
        <div>
          <label className="block text-lg">삭제할 문서 제목:</label>
          <input
            type="text"
            value={title}
            onChange={(e) => setTitle(e.target.value)}
            className="border p-2 w-full"
            required
          />
        </div>
        <button type="submit" className="bg-red-500 text-white py-2 px-4 rounded">
          삭제하기
        </button>
      </form>
      {message && <p className="mt-4 text-red-500">{message}</p>}
    </div>
  );
}

API 엔드포인트에서 삭제 처리

import { NextResponse } from 'next/server';
import clientPromise from '@/lib/mongodb';

export async function DELETE(request: Request) {
  try {
    const { searchParams } = new URL(request.url);
    const title = searchParams.get('title');
    if (!title) {
      return NextResponse.json({ success: false, error: '제목을 입력해주세요.' });
    }

    const client = await clientPromise;
    const db = client.db();
    const collection = db.collection('kakao');

    // MongoDB에서 title에 해당하는 문서를 삭제
    const result = await collection.deleteOne({ title });
    if (result.deletedCount === 0) {
      return NextResponse.json({ success: false, error: '삭제할 문서가 없습니다.' });
    }

    return NextResponse.json({ success: true, message: '문서가 성공적으로 삭제되었습니다.' });
  } catch (error) {
    return NextResponse.json({ success: false, error: error.message });
  }
}

클라이언트에서 요청한 title 기준으로 문서를 삭제하고 성공 여부를 클라이언트에 응답합니다.

#mongodb#mongodb delete#mongodb delete method#mongodb deleteOne#mongodb deleteMany#backend