按值删除数组中的元素| MongoDB |节点JS

时间:2019-04-18 01:47:42

标签: node.js mongodb

我有一个mongoDB,其中包含一个名为users的集合。每个元素都有一个usrName,UserID,Token,然后是3个数组,分别是传入和传出的好友(它们都与“ friends”相关)。我正在寻找类似的东西:

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

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

这是数据库结构enter image description here

1 个答案:

答案 0 :(得分:1)

更新看起来像这样:

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

$pull使用一个对象,该对象描述您要从中提取的数组字段以及用于删除它的条件。因为您说的是一个字符串数组,所以您将寻找相等性。但是请注意,如果使用不同的值,还可以使用诸如$gte$lt等mongodb运算符。

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

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"} }})