我有一个mongoDB,其中包含一个名为users的集合。每个元素都有一个usrName,UserID,Token,然后是3个数组,分别是传入和传出的好友(它们都与“ friends”相关)。我正在寻找类似的东西:
db.collection('users').find({user:"some userID"}).update
或类似的内容。
我希望搜索正确的元素(按ID),然后按值从“传入”数组中删除某些元素。 (它是一个字符串数组)
答案 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"} }})