如何删除与 MongoDB $pull 条件不匹配的元素?

How do I remove elements not matching conditions with MongoDB $pull?

我有一个如下所示的 MongDB 文档:

{
   values: [{val:true}, {val:false}, {val:true}, {val:"dgfdshfsj"}]
}

如何使用 MongoDB $pull 运算符从数组中删除所有不是 true 的元素,有点像这样:

db.myCollection.update({}, {$pull{values:{val:!true}}}, {multi:true})

使用$elemMatch operator in your query together with the logical operator $ne如下:

db.myCollection.updateMany(
    { "values": { "$elemMatch": { "val": { "$ne": true } } } },
    { "$pull": { "values": { "val": { "$ne": true } } } }
)