MongoDB Atlas中文档未更新:findOneAndUpdate的$pull操作失效
问题:MongoDB $pull操作无法从数组中移除元素
我尝试从MongoDB数据库的数组中移除元素,使用findOneAndUpdate()方法能够定位到正确的文档,但$pull操作并未实际更新文档内容。
相关代码实现
删除接口代码
app.post("/delete", async (req, res)=>{ const checkedItem = req.body.deleteItem; const listName = req.body.listName try{ if(listName === "today"){ await ItemModel.findByIdAndRemove(checkedItem); res.redirect("/") console.log("successfully deleted"); }else{ await listModel.findOneAndUpdate( {name: listName }, {$pull: { itemsname: {_id: checkedItem}}}, {new: true} ); res.redirect("/"+ listName) console.log("item deleted from"+listName+checkedItem); } }catch(err){ console.log(err) } });
模型与Schema定义
const itemSchema = { name: String, }; const ItemModel = mongoose.model("item", itemSchema); const listSchema = { name: String, itemsname: { type: Array, default: [itemSchema] } }; const listModel = mongoose.model("list", listSchema);
自定义列表路由代码
app.get("/:CustomListUrl", async (req, res) => { const CustomUrl = _.capitalize(req.params.CustomListUrl); try { const find = await listModel.findOne({ name: CustomUrl }); if (!find) { await listModel.create({ name: CustomUrl, itemsname: [] }) res.redirect("/" + CustomUrl) } else { res.render("list", { listtitle: CustomUrl, itemstodo: find.itemsname }); } } catch (err) { console.log(err) } });
内容的提问来源于stack exchange,提问作者harshit
相关产品推荐
相关产品推荐

