DocumentDB:是否可以删除自动生成的标签、_Etag、_ts 等?
DocumentDB: Is it possible to remove auto generated tags, _Etag, _ts etc?
我正在使用 .NET SDK 从 api-app 查询我的 docDb,在选择时我得到了这些我不想得到的标签。
基本上我想知道是否可以删除自动生成的标签 _Etag、_ts、_rid、_attachments 等?
这背后的原因是我想将 Select 查询的 JSON 输出转换为 XML,_tags 是不允许的吗?如果有人有不同的方法,请告诉我!
已更新
使用 SELECT * FROM...
时无法自动抑制这些。以下是有关如何处理此问题的一些选项:
- 指定您想要在查询中返回的字段
- 在
obj.Remove("_rid");
for .NET、delete obj._rid
for Node.js 或将 key/value 对复制到新的动态对象中时,将其删除以“_”开头的键。
- 创建执行 #2 服务器端的存储过程 (sproc)
- 更新 使用用户定义函数 (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 前缀。
我正在使用 .NET SDK 从 api-app 查询我的 docDb,在选择时我得到了这些我不想得到的标签。 基本上我想知道是否可以删除自动生成的标签 _Etag、_ts、_rid、_attachments 等?
这背后的原因是我想将 Select 查询的 JSON 输出转换为 XML,_tags 是不允许的吗?如果有人有不同的方法,请告诉我!
已更新
使用 SELECT * FROM...
时无法自动抑制这些。以下是有关如何处理此问题的一些选项:
- 指定您想要在查询中返回的字段
- 在
obj.Remove("_rid");
for .NET、delete obj._rid
for Node.js 或将 key/value 对复制到新的动态对象中时,将其删除以“_”开头的键。 - 创建执行 #2 服务器端的存储过程 (sproc)
- 更新 使用用户定义函数 (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 前缀。