Mongodb 如何删除数组第三级中包含的元素?
我的数据库的结构如下:Mongodb 如何删除数组第三级中包含的元素?,mongodb,Mongodb,我的数据库的结构如下: { "universe": "comics", "saga": [ { "name": "x-men", "characters": [ { "character": "wolverine",
{
"universe": "comics",
"saga": [
{
"name": "x-men",
"characters": [
{
"character": "wolverine",
"powers": [
{
"power": "self-recovery"
},
{
"power": "Super strength"
},
{
"power": "steels claws"
}
]
},
{
"character": "cyclops",
"powers": [
{
"power": "rays"
},
{
"power": "Super strength"
}
]
}
]
}
]
},
{
"universe": "comics",
"saga": [
{
"name": "spiderman",
"characters": [
{
"character": "venom",
"powers": [
{
"power": "Super strength"
}
]
}
]
}
]
}
我基本上想学习如何使用复杂阵列进行操作,这次我想如果我得到这个问题的答案,我会学到很多。
我想删除对象,其中“power:“self recovery”
类似于$.saga.characters.$.powers
我不知道怎么做,因为这个属性在主根下有很多层
通常我会用这样的东西:
db.mydb.update(
{
saga: {
$elemMatch: { saga.characters.$ },
},
},
{ $pull: { powers: { power: "Super strength"
} }},
{
new: true,
multi:true
},
在本例中,它应该删除{“power”:“self recovery”}
中的尽可能多的对象(在本例中,仅删除一个对象,即角色为狼獾的位置)
但我不知道该怎么做
db.test.update(
{
"saga.characters.powers": {
"$elemMatch": {
"power": "self-recovery"
}
}
},
{
"$pull": {
"saga.$[].characters.$.powers": {
"power":"self-recovery"
}
}
}
)
它会删除相应的电源对象。它会导致
/* 1 */
{
"_id" : ObjectId("5f11e25a9e001b53e39985fd"),
"universe" : "comics",
"saga" : [
{
"name" : "x-men",
"characters" : [
{
"character" : "wolverine",
"powers" : [
{
"power" : "Super strength"
},
{
"power" : "steels claws"
}
]
},
{
"character" : "cyclops",
"powers" : [
{
"power" : "rays"
},
{
"power" : "Super strength"
}
]
}
]
}
]
}
请检查并让我知道缺少的内容尝试MongoDb 3.6中的位置all操作符+
var query = {
universe: 'comics'
};
var update = {
$pull: {
'saga.$[].characters.$[].powers': {
power: 'self-recovery'
}
}
};
var options = {
multi: true
};
db.collection.update(query, update, options);
请尝试updateMany
并查看此问题,只需按照操作放置对象键,“$[]”是什么意思?是否需要放置“[]”“$[]”对数组中与标准匹配的所有子文档应用拉动操作谢谢!如果我只使用$
运算符而不使用[]
行得通吗?你能帮我一下吗?这个问题很重要