[英]How update and delete bulk operation in mongodb?
我正在構建一個任務管理應用程序,其中只有管理員可以刪除用戶。 當管理員刪除用戶時,我想將刪除的用戶任務分配給他的 assignby 用戶。
{
_id: new ObjectId("63bad43ee5d01d4cc13d58b2"),
title: 'Test task',
completed: false,
urgent: false,
assignedBy: new ObjectId("63afc89d7e3da6e5d996d415"), // ex: john
asignTo: new ObjectId("63bac632f2f1830832d229a4"), // ex: devid
__v: 0
}
當我從數據庫中刪除 devid 用戶時,我想將他的任務分配給 john 並保存任務
{
_id: new ObjectId("63bad43ee5d01d4cc13d58b2"),
title: 'Test task',
completed: false,
urgent: false,
assignedBy: new ObjectId("63afc89d7e3da6e5d996d415"), // ex: john
asignTo: new ObjectId("63afc89d7e3da6e5d996d415"), // ex: john
__v: 0
}
我認為您正在尋找交易以避免丟失數據。
所以你可以嘗試一些類似的東西(不是真正的代碼):
const updateAndDelete = async (userToRemove) => {
const session = await db.startSession()
try {
session.startTransaction();
const user = await User.findById(userToRemove, {session: session})
const {assignedBy} = user
await user.remove({session: session})
await Task.updateMany({asignTo: userToRemove}, {asignTo: assignedBy}, {session: session})
await session.commitTransaction();
} catch(e) {
await session.abortTransaction();
}
session.endSession();
}
如果一切正常,您提交事務並保存所有更改( if
需要,您也可以添加一些異常),否則您可以回滾並且不會丟失任何數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.