node.js - 如何从 MongoDB 的数组字段中删除特定的子文档?
问题描述
好吧,我一直在做一个项目,我想删除 mongodb 数组中的一个项目。这是我的代码
return new Promise(async(resolve, reject) => {
await categoryCollection.findOne({_id : ObjectID(this.category_id)}, async (err, cat) => {
let x = this.cat_slug
if(!err) {
cat.sub_categories.forEach(function(s_cat) {
if (s_cat.slug == x) {
// here i need to delete the array
}
})
} else {
reject(err)
}
})
})
}
以我的 mongodb 集合为例
{
"_id" : ObjectId("5e89db06a4c8d06b8b8784ae"),
"author" : ObjectId("5e89db06a4c8d06b8b8784ad"),
"name" : "Design",
"slug" : "design",
"sub_categories" : [
{
"author" : ObjectId("5e89e3914ebca9658b4bdae4"),
"name" : "Games",
"slug" : "games",
"created_at" : "2020-4-5-6:55:38",
"updated_at" : "2020-4-5-6:55:38"
},
{
"author" : ObjectId("5e89e39c4ebca9658b4bdae5"),
"name" : "Photoshop",
"slug" : "photoshop",
"created_at" : "2020-4-5-6:55:38",
"updated_at" : "2020-4-5-6:55:38"
}
],
"created_at" : "2020-4-5-5:56:55",
"updated_at" : "2020-4-5-5:56:55"
}
我想删除sub_categories
数组中的一个项目,当我单击删除按钮时,该项目将从我的模板引擎(按钮)中选择它我应该删除一个特定的项目,例如我想删除它的 sub_categories[0] 项目。
解决方案
这可以帮助你。
categoryCollection.update(
{ _id : ObjectID(this.category_id) },
{ $pull:
{ 'sub_categories':
{ "author": ObjectId("5e89e3914ebca9658b4bdae4") }
}
}
)
只有当“作者”是唯一的时它才会起作用。如果不。为每个“子类别”添加唯一 ID。
推荐阅读
- javascript - 具有不同滚动方向的部分
- bash - 如何使用 bash 脚本添加某些单词或单词部分来复制文件的名称?
- java - 端口无效。通过 Selenium 使用 ChromeDriver 和 Chrome 退出 ...org.openqa.selenium.os.OsProcess checkForError
- php - 子查询在 MySQL 工作台中工作,但不是 PHP
- javascript - 循环遍历 HTML 表并添加到数据库
- php - 带有 WordPress CTR 插件的 PHP For 循环
- vba - vba excel宏按钮,仅更改特定单元格,替换为其他工作表中的不同数据
- sql - Oracle SQL 在哪里过滤多行
- c - 为结构指针赋值
- javascript - 从脚本所有者拥有的任何文档中访问常用的自定义表格功能