从另一个数组中删除数组元素



我有一个MongoDB对象,比如:

{
"courseName": "ML",
"user": ObjectId("6087dc4c2ba7a828363c9fca"),
"questions": [  
{
"topics": [
"a","b"
],
},
{
"topics": [
"a","b","d"
],
}
]
}

我想将具有courseNameuser的问题查找为问题,我想删除与输入主题匹配的主题。

我该怎么做?

如果我的输入是["a"],那么更新输出应该看起来像:

{
"courseName": "ML",
"user": ObjectId("6087dc4c2ba7a828363c9fca"),
"questions": [  
{
"topics": [
"b"
],
},
{
"topics": [
"b","d"
],
}
]
}
  • questions中所有元素的$[]位置和$in运算符的检查条件
db.collection.updateMany(
{ 
"courseName": "ML",
"user": ObjectId("6087dc4c2ba7a828363c9fca"),
"questions.topics": { $in: ["a"] } 
},
{
$pull: {
"questions.$[].topics": { $in: ["a"] }
}
}
)

游乐场

最新更新