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

vik*_*orh 2 azure azure-api-apps azure-cosmosdb

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

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

Lar*_*one 5

更新

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

  1. 指定要在查询中返回的字段
  2. 一旦obj.Remove("_rid");.NET,delete obj._ridNode.js 接收到数据,或者将键/值对复制到跳过以"_"开头的键的新动态对象,则删除它们.
  3. 创建一个存储过程(sproc),它执行#2服务器端
  4. 更新使用用户定义的函数(UDF),请参见下文

我现在相信使用UDF是最好的方法.

function stripUnderscoreFields (o) { 
  output = {};

  for (key in o) {
    value = o[key];
    if (key.indexOf('_') !== 0) {
      output[key] = value;
    }
  }
  return output 
}
Run Code Online (Sandbox Code Playgroud)

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

SELECT VALUE udf.stripUnderscoreFields(c) FROM collection c
Run Code Online (Sandbox Code Playgroud)

请注意,VALUE上面示例中的关键字会抑制在每个文档之前添加的$ 1前缀(如果将其保留).