Azure cosmosdb 如何抑制CosmosDB“;“违约”;结果集中的信息?

Azure cosmosdb 如何抑制CosmosDB“;“违约”;结果集中的信息?,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我想在下面的结果集中隐藏CosmosDB信息,怎么做 { "id": null, "_rid": null, "_self": null, "_ts": 0, "_etag": null, "topLevelCategory": "Shorts,Skirt" }, 这当然是一个摘录,但我不想显示ID等,因为它们在这个结果中没有任何用途,但我无法找出

我想在下面的结果集中隐藏CosmosDB信息,怎么做

 {
            "id": null,
            "_rid": null,
            "_self": null,
            "_ts": 0,
            "_etag": null,
            "topLevelCategory": "Shorts,Skirt"
 },
这当然是一个摘录,但我不想显示ID等,因为它们在这个结果中没有任何用途,但我无法找出如何抑制该信息

我期待以下几点

 {
            "topLevelCategory": "Shorts,Skirt"
 },
查询如下所示

 $"SELECT DISTINCT locales.categories[0] AS topLevelCategory " +
                                                 $"FROM c JOIN locales in c.locales " +
                                                 $"WHERE locales.country = '{apiInputObject.Locale}' " +
                                                 $"AND locales.language = '{apiInputObject.Language}'";
IQueryable<JObject> queryResultSet = client.CreateDocumentQuery<JObject>(UriFactory.CreateDocumentCollectionUri(databaseName, databaseCollection), parsedQueryObject.SqlStatement, queryOptions);
有趣的是,如果我将结果转换为JOBJECT,我不会得到系统数据,只有在我将DocumentQuery创建为DOcument时才会得到它,所以解决方法如下

 $"SELECT DISTINCT locales.categories[0] AS topLevelCategory " +
                                                 $"FROM c JOIN locales in c.locales " +
                                                 $"WHERE locales.country = '{apiInputObject.Locale}' " +
                                                 $"AND locales.language = '{apiInputObject.Language}'";
IQueryable<JObject> queryResultSet = client.CreateDocumentQuery<JObject>(UriFactory.CreateDocumentCollectionUri(databaseName, databaseCollection), parsedQueryObject.SqlStatement, queryOptions);
IQueryable queryResultSet=client.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri(databaseName,databaseCollection),parsedQueryObject.SqlStatement,queryOptions);
但是这还有其他异步问题,但是上面没有显示系统生成ID,但是下面的显示了

 var query = client.CreateDocumentQuery<Document>(UriFactory.CreateDocumentCollectionUri(databaseName, databaseCollection), parsedQueryObject.SqlStatement, queryOptions).AsDocumentQuery();
                        var result = await query.ExecuteNextAsync<Document>();
var query=client.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri(databaseName,databaseCollection),parsedQueryObject.SqlStatement,queryOptions)。AsDocumentQuery();
var result=await query.ExecuteNextAsync();
这些都在Cosmos数据库中

当然,您可以在sql中过滤它们:
从c中选择c.topLevelCategory,不要提及它们或使用
从c中选择*
。sql中的过滤是最好的方法,优于结果集的二次处理


更新答案:

您的情况是执行完全相同的查询,JOBJECT不显示系统数据,但文档显示

我的解释如下:

是文档DB.NET包的自包含基类。它具有以下生成属性:

SDK将尝试将结果数据逐个映射到您在
CreateDocumentQuery
中定义的实体类

实际上,您已经找到了解决方案。您可以定义自定义pojo来接收结果数据。只需在pojo内部包含所需的属性,如:

class Pojo : Document
    {
        public string id { get; set; }
        public string name { get; set; }
    }

这既有业务含义,也没有多余的字段。希望我能清楚地了解这一点。

我没有提到它们,也没有使用select*但它们仍然会出现,我也希望有一种方法可以避免它们,因为它们会将我发送到移动设备的数据增加大约6倍。@MattDouhan Hi,您能告诉我您是如何查询数据的吗?我编辑并添加了查询。我刚刚测试并执行了完全相同的查询。JOBJECT不显示系统数据,但文档显示