首页 > 解决方案 > 按值删除数组中的元素 | MongoDB | 节点JS

问题描述

我有一个名为 users 的集合的 mongoDB。每个元素都有一个 usrName、UserID、token,然后是 3 个数组,它们是朋友、传入和传出(所有这些都与“朋友”相关)。我正在寻找类似的东西:

db.collection('users').find({user:"some userID"}).update或类似的东西。

我希望搜索正确的元素(按 id),然后按值从“传入”数组中删除一些元素。(它是一个字符串数组)

这是数据库结构在此处输入图像描述

标签: node.jsmongodb

解决方案


更新看起来像这样:

db.collection('users').updateOne({user: "some userID"}, {$pull: { incoming: "removeThisValue" }})

$pull接受一个对象,该对象描述您从中提取的数组字段以及您用于删除它的条件。既然你说它是一个字符串数组,你就会寻找平等。但请注意,如果使用不同的值,您也可以使用 mongodb 运算符,例如$gte,和其他运算符。$lt

如果您一次从数组中删除多个值:

db.collection('users').updateOne({user: "some userID"}, {$pull: { incoming: { $in: ["removeMe", "removeMeToo"] } }})

同样值得注意的是,如果您曾经拥有一组文档,您也可以针对特定的键/值。假设用户有一系列爱好,其中每个爱好都有“title”和“timePerWeek”键。我们可以删除标题为“游戏”的爱好,如下所示:

db.collection('users').updateOne({user: "some userID"}, {$pull: { hobbies: {title: "Gaming"} }})


推荐阅读