选择*除了使用SQL API的Cosmos DB中的特定属性

选择*除了使用SQL API的Cosmos DB中的特定属性,sql,nosql,azure-cosmosdb,Sql,Nosql,Azure Cosmosdb,考虑以下内容,我有一个类似以下内容的文档: "id": 2 "properties": { "desired": { "Property1": 10, "Property2": 1, "Property3": 1, "$metadata": { ...

考虑以下内容,我有一个类似以下内容的文档:

"id": 2
"properties": {
    "desired": {
        "Property1": 10,
        "Property2": 1,
        "Property3": 1,
        "$metadata": { 
        ...
        },
        "$version": 53
    }
},
我想从文档中获取除
$metadata
$version
之外的所有内容。显而易见的解决方案是:

SELECT c["Property1"], c["Property2"] .... FROM c where c["id"] = "2"
但是,我的文档可能会动态扩展,因此上述情况并不理想。因此,我认为最好只排除
$metadata
$version
。我在stackoverflow上看到了不同的“有趣”解决方案,其中一个建议创建一个临时表

不幸的是,查询需要非常高效,因为我想减少RU的使用量。另外,我真的希望避免在代码中处理排除


因此,如何从文档中排除特定的“列”,而不编写过长的查询,其中可能包括创建临时表。

Cosmos DB不支持“Project Away”。您需要指定要投影或使用*的属性,然后返回所有属性。

您认为存储过程可以更优雅地解决我的问题吗?如果您在单独的层次结构中拥有想要的属性和不想要的属性,那么您可以自联,对想要的属性执行选择*,而忽略不想要的属性。但我认为这并不是你想要的。你有没有衡量过排除某些列和返回所有列之间的区别?从我所看到的情况来看,向查询添加更复杂的内容通常比从一个简单的查询中获得稍微大一点的返回负载更昂贵。您是对的,然后问题会转移到我的无服务器函数,该函数以计算能力计费:-)在这里,我将不得不处理返回。