使Azure DocumentDB不返回服务字段

时间:2016-04-02 17:01:07

标签: node.js azure azure-cosmosdb nosql

我在节点应用程序中使用类似SQL的sytax for Azure DocumentDB。这是方法代码

pp = &var

和回复

client.queryDocuments(collection._self, "SELECT * FROM root").toArray(function(err, results) {
    if (err) {
        callback(err);
    } else {
        callback(null, results);
    }
});

有没有办法让DocumentDb不重新启动服务字段(_rid,_self,_etag,_ts,_attachments),而不是在select子句中写入所有非服务字段?

2 个答案:

答案 0 :(得分:1)

<强>更新

仅使用查询,无法使用查询返回除系统字段之外的所有字段,但无法在SELECT子句中列出每个非系统字段。但是,您可以使用在返回或使用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

答案 1 :(得分:0)

根据Azure DocumentDB REST API Query Documents,这些字段由系统生成,请参阅API文档的Response - Body部分以了解文档的属性。

用于Node.js的DocumentDB SDK包装了相关的REST API,因此如果您不想返回,可以尝试在回调函数中过滤它们。