MongoDB 3.6允许对任何数组中的所有匹配元素执行复杂的数组操作 - 无论嵌套有多深 - Update Nested Arrays with $[identifier]
请考虑以下survey
集合中的文档:
{
"_id": "5a7d86d8fac139e71b0b9f5b",
"results": [
{
"items": [
{
"comments": [
{
"id" : "123456",
"email": "user@email.com",
"comment": "comment 1"
}
]
}
]
}
]
}
我尝试使用id
和新$pull
$[<identifier>]
删除评论
我根据The update command 尝试了下面的command
:
db.runCommand({
update: "survey",
updates: [
{
q: {},
u: {
$pull: {
"results.$[].items.$[].comments.$[comment]": { "comment.id": { $eq: "123456" } }
}
},
arrayFilters: [{ "comment.id": { $eq: "123456" } }]
}
]
})
但它没有用,因为$pull
期望一个数组值:
Cannot apply $pull to a non-array value
有任何帮助吗?感谢。
答案 0 :(得分:1)
尝试positional all
$[]变体。
像
这样的东西db.runCommand({
update: "survey",
updates: [
{
q: {},
u: {
$pull: {
"results.$[].items.$[].comments": { "id": "123456" }
}
}
}
]
})