mongodb - 如何在 MongoDB 中删除双嵌套数组中的元素
问题描述
我正在研究mongo,此时需要从嵌套在另一个数组中的特定元素中删除,结构如下:
{
"_id" : ObjectId("5e616314946b6d3ac4ed8252"),
"uid" : "5db069478556622b4a0adca5",
"areas" : [
{
"name" : "mexico",
"elements" : [
"23452345",
"24454675"
],
},
{
"name" : "usa",
"elemets" : [
"123123123",
"1234334"
],
}
]
}
所以我需要一个查询,让我删除“元素”属性中的任何元素。
我尝试使用此查询,但无法访问它。
db.areas.update(
{ },
{ $pull:
{ areas: {
$elemMatch: {
elements: { $eq : "123123123" }
}
}
}
},
{ multi:false }
);
这只是说
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
解决方案
这是update
用于删除子数组 ( elements
) 中的特定数组元素的方法。
注意要移除(pull)指定元素(elements
value "24454675"
),需要指定outer-array的元素匹配条件(注意outer-array field有两个元素areas
)。
db.areas.update(
{ "areas.name": "mexico" },
{ $pull: { "areas.$.elements": "24454675" } }
)
注意:如果不指定条件,则数组{ "areas.name": "mexico" }
的整个子文档将被删除。areas
推荐阅读
- php - 给定两个数组,如何构建一个新数组,该数组只包含一个数组的元素,而第二个数组中的键作为值存在?
- sql - 嵌套查询 Sql Oracle 排序
- php - 知道登录用户的用户标识
- wordpress - 查询帖子取决于使用 acf 的转发器字段内的自定义字段
- mysql - 选择具有多个条件的多列
- java - Java 套接字程序在 sc.nextInt() 处挂起;
- python - Python 在单独的模块中编辑变量
- linux - Incrontab 输出到文件不起作用
- javascript - currentArray.forEach 不是函数(Fetch API)
- python - 如何在 pyplot 上保存 rgba 图像?