Hi all ,我正在使用mongodb版本' mongodb-win32-x86_64-2008plus-ssl-3.0.7-signed
'和中间人mongoose版本' 4.2.5
'尝试批量插入,删除和更新 . 我搜索了几天,但没有发现任何答案是明确的 .
我有一个下面的数组列表,数组列表有四个具有不同标签级别的对象 .
var mangoobjectList = [
{ id: 1, name: 'Gopal Vog', origin: 'Rajshahi', tag: 0 },//no change
{ id: 2, name: 'Himsagor', origin: 'Dhaka', tag: 1 },//insert
{ id: 3, name: 'Langra', origin: 'Sylet', tag: 2 },//update
{ id: 4, name: 'Amrupali', origin: 'Chuadanga', tag: 3 }//delete
];
我的意思是说tag = 0 --no operation,tag = 1 - inset tag = 2 - update,tag = 3 - delete
现在我想通过 one shot into mongodb database save 这个数组 . 如果任何对象失败,那么整个数组将回滚 . 任何想法或解决方案将是欣赏 .
1 回答
你想要的是一个'交易',但mongodb不支持它 . mongodb中的文档以原子方式更新 - 您无法从批量插入/更新/删除回滚 . 您最好重新考虑数据库设计 .
您还可以实现"transaction-like"方法,如mongodb文档中所述:https://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/
此外,您可以使用mongoose插件 - 可能是最简单的选项:https://www.npmjs.com/package/mongoose-transaction