单击元素时从 mongodb 中删除特定的数组元素

Posted

技术标签:

【中文标题】单击元素时从 mongodb 中删除特定的数组元素【英文标题】:remove a particular array element from mongodb on clicking the element 【发布时间】:2020-10-08 19:18:29 【问题描述】:

当从应用程序中单击存储在 MongoDB 中的特定数组元素时,我正在使用此代码删除该数组元素。但是这段代码不起作用。

架构结构看起来像这样 -

const tagsSchema = new Schema( 类别: 类型:字符串, 要求:真 , tname:类型:数组 , _id: true );

以下是我用于从 db 中删除数组元素的代码 -

Tags.updateOne( tname: req.params.name , $pull: _id: [req.params.id] )

例如 - "tname": "technical", "nontechnical"

现在,在应用程序中单击技术以将其删除,但我使用的代码并未被删除。

【问题讨论】:

欢迎来到 Stack Overflow!请提供有关您尝试解决问题的更多信息。 “不工作”是什么意思?有没有特别的错误?提供更多代码作为上下文也很有帮助。 我没有收到任何特定错误,但无法删除选定的元素,并在终端中将该选定的元素设为未定义。我不知道那段代码是否适合删除数组元素 【参考方案1】:

您可以在数组字段之后直接使用 element_value 而无需 [],如下所示..

Tags.updateOne(tname: req.params.name,  $pull:  your_array_field: req.params.id   )

【讨论】:

这也不起作用,在应用程序中找不到被点击的元素。打印 tname: req.params.name 的值时变得未定义,我认为在数据库中未访问单击的元素。 好的,你应该检查你的前面,值'req.params.name'来自哪里。查询似乎没问题。【参考方案2】:

您必须通过其“_id”找到特定标签,然后从“tname”数组中删除特定名称。

Tags.updateOne( _id: req.params.id ,  $pull:  tname: req.params.name  )

【讨论】:

以上是关于单击元素时从 mongodb 中删除特定的数组元素的主要内容,如果未能解决你的问题,请参考以下文章

Vanilla Javascript - 向元素 1 添加类并在单击元素 1 时从元素 2 中删除类

在枚举该数组时从数组中删除元素

使用 findIndex() 从数组中删除特定元素 - React [重复]

Python:如何在迭代列表时从列表中删除元素而不跳过未来的迭代

如何从数组中读取特定元素,该元素是来自 mongodb 的车把文件中对象的一部分?

在 Mongodb 数组中,有没有办法在特定元素位置之前/之后插入新元素