我需要从嵌套文档中删除数组项,并且$ pull无法正常工作。我需要从“ data.tags”数组中删除项目。
这是我的文档
{
"_id" : "TAGS",
"data" : {
"tags" : [
{
"_id" : ObjectId("5cff889688204e2cc6e219f7"),
"tag" : "tag1"
},
{
"_id" : ObjectId("5d00b888378f6584f25946f2"),
"tag" : "tag2"
},
{
"tag" : "tag3",
"_id" : ObjectId("5d09cbf607bc04a8fa8dd2a9")
},
{
"tag" : "tag2",
"_id" : ObjectId("5d09cbfb07bc04a8fa8dd2aa")
}
]
}
}
当我尝试使用pull进行更新时,它不会出错,但不会删除该项目。
我的更新声明
.update({"_id" : "TAGS"}, {"$pull": { "data.tags": {"_id": "5d09cbf607bc04a8fa8dd2a9"}}})
答案 0 :(得分:1)
您缺少ObjectId构造函数。否则,类型将不匹配,因为您假设"_id"
的类型为string
。
.update({"_id" : "TAGS"}, {"$pull": { "data.tags": {"_id": ObjectId("5d09cbf607bc04a8fa8dd2a9")}}})
^^^