在MongoDB中重命名数组中的字段

时间:2018-08-21 17:45:44

标签: mongodb

我需要更新集合中的字段名称。问题在于所讨论的字段在数组内。因此,我正在尝试确定执行此操作的正确方法。我试图这样做以完成对“计划”数组中存在的字段的重命名::

db.customers.updateMany( {}, { $rename: { "plans" : { "subscriptionType": "membershipType" } } } );

但是这行不通。处理数组中字段的这种转换的正确方法是什么?

数据如下:

{
  _id: 123,
  prop1: value,
  prop2: value,
  prop3: value,
  plans: [
    subscriptionType: value,
    otherProp: value,
    otherProp: value
  ]
}

1 个答案:

答案 0 :(得分:1)

您可以使用Aggregation Framework的$addFields覆盖PFCloud.callFunction(inBackground: "MyCloudFunc", withParameters: []) { (result, error) in guard let jsonString = result as? String else { return } guard let data = jsonString.data(using: String.Encoding.utf8) else { return } guard let response = try? JSONDecoder().decode(MyDecodableStruct.self, from: data) else { return } // DO SOMETHING WITH RESULT. } 字段,并使用$map运算符重命名数组中的字段。然后,您可以使用$out覆盖现有集合:

Dictionary

或者,您可以动态地执行此操作。在此解决方案中,您不必显式指定其他字段名称:

Data

使用$objectToArray$filter淘汰旧的键/值对,并使用$mergeObjects将过滤后的对象与新的重命名字段组合在一起。