MongoDB - 如何使用 $unset 删除部分字段
MongoDB - How to remove part of field with $unset
我在 MongoDB 中有一个数据库,其中包含具有以下结构的条目 image
我在 Python 中使用一个脚本,我用它从这个结构中检索信息,然后将其保存到 csv。
最终目标是仅删除 parameters
结构的某些部分。例如,我想保留 parameters[0].values
和 parameters[1].values
但不保留 parameters[2:5].values
我没有这方面的经验,但我使用的命令如下
{"$unset":"exercises.parameters.values"] }
但这将从 parameters
内的所有对象中删除所有 values
。由于变量在对象中具有相同的名称,因此我无法找到一种方法来指定我想要的对象。
我也试过像这样建立索引
{"$unset":"exercises.parameters[2].values"] }
但这似乎不起作用...
非常感谢您的帮助!
更新
db.collection.update({
"_id": 1
},
{
"$unset": {
"exercises.$[].parameters.2.values": "",
"exercises.$[].parameters.3.values": "",
"exercises.$[].parameters.4.values": "",
"exercises.$[].parameters.5.values": ""
}
},
{
"multi": true
})
汇总
db.collection.aggregate([
{
$set: {
"exercises": {
"$map": {
"input": "$exercises",
"as": "item",
"in": {
"$mergeObjects": [
"$$item",
{
parameters: {
$slice: [ "$$item.parameters", 2 ]
}
}
]
}
}
}
}
}
])
我在 MongoDB 中有一个数据库,其中包含具有以下结构的条目 image
我在 Python 中使用一个脚本,我用它从这个结构中检索信息,然后将其保存到 csv。
最终目标是仅删除 parameters
结构的某些部分。例如,我想保留 parameters[0].values
和 parameters[1].values
但不保留 parameters[2:5].values
我没有这方面的经验,但我使用的命令如下
{"$unset":"exercises.parameters.values"] }
但这将从 parameters
内的所有对象中删除所有 values
。由于变量在对象中具有相同的名称,因此我无法找到一种方法来指定我想要的对象。
我也试过像这样建立索引
{"$unset":"exercises.parameters[2].values"] }
但这似乎不起作用...
非常感谢您的帮助!
更新
db.collection.update({
"_id": 1
},
{
"$unset": {
"exercises.$[].parameters.2.values": "",
"exercises.$[].parameters.3.values": "",
"exercises.$[].parameters.4.values": "",
"exercises.$[].parameters.5.values": ""
}
},
{
"multi": true
})
汇总
db.collection.aggregate([
{
$set: {
"exercises": {
"$map": {
"input": "$exercises",
"as": "item",
"in": {
"$mergeObjects": [
"$$item",
{
parameters: {
$slice: [ "$$item.parameters", 2 ]
}
}
]
}
}
}
}
}
])