我有一个 MongoDB 集合,其中包含几个带点的字段,例如:
{
"symbol.name": "Some name"
"symbol.state": "Some state"
// etc.
}
现在,我需要将“symbol.name”重命名为“symbol”,并删除其余以“symbol.”开头的字段。到目前为止,这些方法对我都不起作用。通常,字段保持不变,没有任何变化。我们使用的是 Mongo 4.4 和 pymongo。
这个问题有解决办法吗?
我有一个 MongoDB 集合,其中包含几个带点的字段,例如:
{
"symbol.name": "Some name"
"symbol.state": "Some state"
// etc.
}
现在,我需要将“symbol.name”重命名为“symbol”,并删除其余以“symbol.”开头的字段。到目前为止,这些方法对我都不起作用。通常,字段保持不变,没有任何变化。我们使用的是 Mongo 4.4 和 pymongo。
这个问题有解决办法吗?
您可以在使用聚合管道的更新中执行以下操作:
$objectToArray
放入$$ROOT
一个 kv 元组数组中,名为kv
kv
通过进行迭代$map
。在 中$switch
,执行以下操作:kv.k
等于symbol.name
,则将kv.k
(即字段名称)重新映射到symbol.name
$indexOfCP
的,如果它等于 0,则将 元组 转换为。这将在生成的映射结果数组中留下 null ,我们将在步骤 3 中处理这个问题symbol.
kv.k
$set
$$REMOVE
$switch
,我们可以简单地保留kv
条目$filter
仅保留非空条目$replaceRoot
恢复到原始物体形式Mongo Playground
更简洁的版本