MongoDB 문서 삭제 방법 (deleteOne, deleteMany)
KUKJIN LEE • 2개월 전 작성
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
기준으로 문서를 삭제하고 성공 여부를 클라이언트에 응답합니다.