2

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

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

4

1 回答 1

5

更新

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

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

我现在相信使用 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 前缀(如果您将其省略)。

于 2016-02-24T23:56:36.013 回答