Mongooseでドキュメント削除
Node.js Mongooseでドキュメントを削除する方法
Node.js Mongoose を使って MongoDB からドキュメントを削除するには、主に deleteOne()
または deleteMany()
メソッドを使用します。
deleteOne()
メソッド
- 条件を満たす最初のドキュメントを削除します。
- 単一のドキュメントを削除します。
const mongoose = require('mongoose');
// Mongooseモデルの設定
const Schema = mongoose.Schema;
const yourSchema = new Schema({
// ここにドキュメントの構造を定義
});
const YourModel = mongoose.model('YourModel', yourSchema);
// 条件を満たすドキュメントを削除
YourModel.deleteOne({ condition: value }, (err, result) => {
if (err) {
console.error(err);
} else {
console.log('Document deleted successfully:', result);
}
});
YourModel.deleteMany({ condition: value }, (err, result) => {
if (err) {
console.error(err);
} else {
console.log('Documents deleted successfully:', result);
}
});
条件は、ドキュメントのフィールドと値の比較を行うオブジェクトです。例えば、{ name: 'John' }
は、名前が "John" のドキュメントを削除します。
注意
- 削除操作は不可逆です。削除されたドキュメントは復元できません。
- ドキュメントを削除する前に、慎重に条件を設定してください。誤った条件を使用すると、意図しないドキュメントが削除される可能性があります。
const mongoose = require('mongoose');
// Mongooseモデルの設定
const Schema = mongoose.Schema;
const userSchema = new Schema({
name: String,
age: Number
});
const User = mongoose.model('User', userSchem a);
// 名前が "John" で年齢が 30 のドキュメントを削除
User.deleteOne({ name: 'John', age: 30 }, (err, result) => {
if (err) {
console.error(err);
} else {
console.log('Document deleted successfully:', result);
}
});
// 年齢が 30 以上のすべてのドキュメントを削除
User.deleteMany({ age: { $gte: 30 } }, (err, result) => {
if (err) {
console.error(err);
} else {
console.log('Documents deleted successfully:', result);
}
});
削除条件の例
- 論理演算
{ $and: [{ name: 'John' }, { age: 30 }] }
(両方の条件を満たす) - 正規表現
{ name: /John/i }
(大文字小文字を区別しない正規表現) - 存在
{ name: { $exists: true } }
(フィールドが存在する) - 範囲
{ age: { $gte: 20, $lte: 30 } }
(20 以上 30 以下) - 不等号
{ age: { $gt: 30 } }
(30 より大きい) - 等号
{ name: 'John' }
findByIdAndDelete() メソッド
- 特定のIDを持つドキュメントを削除します。
YourModel.findByIdAndDelete(documentId, (err, deletedDocument) => {
if (err) {
console.error(err);
} else {
console.log('Document deleted successfully:', deletedDocument);
}
});
YourModel.findOneAndDelete({ condition: value }, (err, deletedDocument) => {
if (err) {
console.error(err);
} else {
console.log('Document deleted successfully:', deletedDocument);
}
});
new: true
オプションを指定すると、更新後のドキュメントが返されます。- 条件を満たす最初のドキュメントを更新し、更新後のドキュメントを返します。
YourModel.findOneAndUpdate({ condition: value }, { $set: { field: newValue } }, { new: true }, (err, updatedDocument) => {
if (err) {
console.error(err);
} else {
console.log('Document updated and deleted successfully:', updatedDocument);
}
});
remove() メソッド
deleteMany()
と同じ機能を持ちます。
YourModel.remove({ condition: value }, (err, result) => {
if (err) {
console.error(err);
} else {
console.log('Documents deleted successfully:', result);
}
});
javascript node.js mongodb