Azure Cosmos-db重命名文档属性

时间:2019-10-15 15:14:36

标签: c# azure azure-cosmosdb

我有一个很大的cosmos-db集合,我想重命名该集合的某些属性,我发现我可以实现C#应用程序,该应用程序在集合文档上循环,并在每个文档中替换它们,但是此解决方案将根据集合大小需要很长时间。 在Azure Portal上是否还有其他解决方案(功能或存储过程)或SDK,可以在较短的时间内为我们提供相同的功能?

示例:

旧文件 { 码, CName, 地址 }

我想将属性重命名为 { 客户代码, 顾客姓名, 客户地址 }

1 个答案:

答案 0 :(得分:0)

正如您在问题中提到的,您可以使用Stored Procedure来做到这一点。您可以按照示例代码here

  function rename(document, update) {
        var fields, i, existingFieldName, newFieldName;

        if (update.$rename) {
            fields = Object.keys(update.$rename);
            for (i = 0; i < fields.length; i++) {
                existingFieldName = fields[i];
                newFieldName = update.$rename[fields[i]];

                if (existingFieldName == newFieldName) {
                    throw new Error("Bad $rename parameter: The new field name must differ from the existing field name.")
                } else if (document[existingFieldName]) {
                    // If the field exists, set/overwrite the new field name and unset the existing field name.
                    document[newFieldName] = document[existingFieldName];
                    delete document[existingFieldName];
                } else {
                    // Otherwise this is a noop.
                }
            }
        }
    }