【发布时间】:2018-02-09 21:38:50
【问题描述】:
MongoDB 3.6 允许对任何数组中的所有匹配元素执行复杂的数组操作——无论嵌套多深——Update Nested Arrays with $[identifier]
考虑以下关于survey 集合的文档:
{
"_id": "5a7d86d8fac139e71b0b9f5b",
"results": [
{
"items": [
{
"comments": [
{
"id" : "123456",
"email": "user@email.com",
"comment": "comment 1"
}
]
}
]
}
]
}
我正在尝试使用 $pull 和新的 $[<identifier>] 删除基于评论 id 的评论
我根据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
有什么帮助吗?谢谢。
【问题讨论】:
标签: mongodb