DocumentDB:是否可以删除自动生成的标签,_ Etag,_ts等?

时间:2016-02-24 22:12:14

标签: azure azure-cosmosdb azure-api-apps

我正在使用.NET SDK从api-app查询我的docDb,在选择时我会得到这些我不喜欢的标签。 基本上我想知道是否可以删除自动生成的标签_Etag,_ts,_rid,_attachments等?

这背后的原因是我想将Select查询的JSON输出转换为XML,不允许使用_tags吗?如果有人有不同的方法,请告诉我!

1 个答案:

答案 0 :(得分:5)

<强>更新

使用SELECT * FROM...时无法自动抑制这些。以下是有关如何处理此问题的一些选项:

  1. 指定您希望在查询中找回的字段
  2. 一旦收到obj.Remove("_rid"); for .NET,delete obj._rid收到Node.js,或者将键/值对复制到一个新的动态对象,跳过以“ _”。
  3. 创建一个存储过程(sproc),它执行#2服务器端
  4. 更新使用用户定义的函数(UDF),请参阅下面的
  5. 我现在相信使用UDF是最好的方法。

    function stripUnderscoreFields (o) { 
      output = {};
    
      for (key in o) {
        value = o[key];
        if (key.indexOf('_') !== 0) {
          output[key] = value;
        }
      }
      return output 
    }
    

    然后在如下查询中使用UDF:

    SELECT VALUE udf.stripUnderscoreFields(c) FROM collection c
    

    注意,上面示例中的关键字VALUE会抑制在每个文档之前添加的$ 1前缀。