问题标签 [azure-cosmosdb-sqlapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 使用 JavaScript API v2 查询 1 个文档的 Cosmos DB 查询
我有一个如下所示的异步调用链:
addNewDoc() 工作正常并插入文档。然后,我使用 API 的查询功能在 fetchOneDoc() 中查询文档。
获取文档的调用总是返回未定义,但我可以在门户数据库浏览器中查看文档。我试过在通话之间睡觉,以防文档在查询之前没有进入,但这也不起作用。
我已经验证了查询在门户中可以正常工作。
azure-cosmosdb - 我们应该称之为 DocumentDb 还是 CosmosDB SQL Api
我对命名有点困惑。
首先,Document DB 和 Cosmos DB Sql Api 有什么区别,还是只是另一个名字?
其次,为了访问 Cosmos DB Sql Api,我必须使用 DocumentDB nuget 包。它会被重命名还是 DocumentDB 命名保持相关性。
第三,在我的代码中,当命名我的类时,我应该使用 DocumentDB 还是 CosmodDbSqlApi?例如DocumentDbStore
,或CosmodDbSqlApiStore
,等等……
c# - 从 CosmosDB WHERE 返回文档列表以过滤嵌套数据
我正在尝试"docType" : "offer"
从我的 cosmosdb 集合中进行选择,其中公司 ID 与用户公司 ID 匹配。
示例 CosmosDB 文档
查询:这是我当前的查询,但它不适 &&
用于 withbool
和IEnumerable
请注意,我的 cosmosdb 使用的是 SQL API。
azure-cosmosdb - 从条件中仅返回子集的子集
是否可以对孩子进行条件查询?我正在尝试返回所有组,以及所有计数大于 0 的子组(以及子组)。请注意,如果计数大于 0,子组也需要返回子组。
文档:
想要的结果:
我尝试通过加入来做,但还没有找到一种可以跳过一些子组而不是其他子组的方法。欢迎所有建议。
azure-cosmosdb - Cosmos DB 查询不返回所有结果
场景一:
以下之一:
- Cosmos DB 查询不会在一次查询中返回所有预期结果。
- Cosmos DB 查询为同一查询返回不同的结果计数。
在以下情况下可以看到此行为:
在 Portal 上,使用 TOP 执行查询,例如 SELECT TOP 10,但返回的结果中的元素少于预期的 10 个。
在 Portal 上,执行相同的查询,但每次都有不同的结果集。结果集不同,但某些结果被其他结果覆盖。例如,考虑一个预期结果为 [C, O, S, M, O, S] 的查询。在第一次执行中,结果是:[C, O, S]。在第二次执行中,结果是 [C, O, S, M, O]。第二个结果覆盖了第一个结果。
使用查询 REST API,查询返回的结果少于在门户上运行相同的查询。
场景二:
- Cosmos DB 查询为同一查询返回不同的结果(不是结果计数)
c# - GroupBy 和 Pagination 不能一起工作 CosmosDB
我有以下课程:
以及以下查询:
上面的方法会失败,因为我正在尝试做一个GroupBy
in CosmosDB
。如果我将其更改如下,进行分组in-memory
,我会得到我的结果:
问题是,因为我正在对数据进行“内存中”操作,由于我的过滤,返回的数据集不再总是包含 10 条记录。
我能想到的唯一其他选择是递归调用我的函数,直到结果包含 10 个过滤记录,然后返回,但这会消耗很多RU's
并且变得非常昂贵。
我错过了什么,我可以采取另一种方法吗?
azure-cosmosdb - 我应该如何根据我的要求将我的数据分成集合
我试图想出我应该为我的解决方案使用多少个集合。我知道这取决于,但我想就我们将使用的数据类型提供一些背景信息。
- 物联网遥测事件
- 参考数据(侦听来自外部系统的事件并存储它)
- 读取模型 - 根据来自上述两个来源的数据创建非规范化视图
此外,我们将在 IoT 事件和参考数据上使用 cosmos db 更改提要,因此我知道我们将需要一个租约集合。
任何帮助或建议都会很棒!
javascript - Azure Cosomos DB 存储过程响应大小太大
我有存储在 cosmos DB 中的 Sensor IoT Data。我需要过去 30 天的分钟级数据聚合才能在 webapp 中显示。所以我已经为它编写了存储过程来对传感器数据进行分组和聚合。
它给出了以下错误
无法为集合 newData 执行存储过程:{"code":400,"body":"{\"code\":\"BadRequest\",\"message\":\"Message: {\\"Errors \\":[\\"在执行函数时遇到异常。异常 = 错误:由于 \\\\"x-ms-documentdb-script-log-results\\\\",结果消息会太大。从返回带有当前消息的脚本并使用继续令牌再次调用脚本或修改脚本。\\r\\n堆栈跟踪:错误:由于\\\\“x-ms-documentdb-script-log,结果消息会太大-results\\\\"。从带有当前消息的脚本返回并使用继续令牌再次调用脚本或修改您的脚本。\\n at validateSize (sa\\"]}\r\nActivityId: 46713736-fe18-4fd1 -8df1-49fa615c7289,请求 URI:/apps/35edbe01-33d4-4189-9959-240fe985a75e/services/f3955cd0-044e-4a48-ad24-ae51a24c13b8/partitions/784e5371-950b-476d-a765-52ddb784f8dd/replicas/131850819031922581p/, RequestStats: \r\nRequestStartTime: 2018 -11-06T21:08:06.7386246Z,尝试的区域数:1\r\n,SDK:Microsoft.Azure.Documents.Common/2.1.0.0\"}","activityId":"46713736-fe18-4fd1- 8df1-49fa615c7289","substatus":413}
作为具有 1 秒级别数据的传感器,我需要为其查找 1 分钟聚合,我不能将流分析作业用作转发,我不知道要保留在 avg() 中的传感器名称是什么。
唯一留给我的选项是运行存储过程并取回 1 分钟聚合。
我已将 Javascript 用于存储过程,在我的 api 调用中我使用的是 java Spring boot。请给我任何建议,我如何才能超越 Cosmos DB 的这个限制,或者如何在 Cosmos DB 中存储 1 分钟的聚合,以便我可以检索这些记录。
以下是我的程序,我正在传递 3 个字符串参数,例如“pressure,Temp,volume”“123444”“345552”
}
azure - 使用 PATH 对 SQL API 中的数据进行 Azure Cosmos DB 分区和索引
我正在将 IoT 数据收集到 Azure cosmos DB。我知道 COSOMOS DB SQL API 是由 Path 自动索引的。我在每个文档中有大约 150 个传感器,大多数 sql 查询都是
DeviceId 已经是 Partition Key
选择 c.sensorVariable From c where c.DeviceId = 'dev1' AND c.time= date1'
{ “DeviceId”:“dev1”,“时间”:123333,“sensor1”:20,“sensor2”:40}
我将获取各种传感器数据,但我所有的查询都取决于 deviceId 和时间(在 Unix Timestamp 中)
是否可以在 deviceID 和 time 上索引数据并排除也在同一路径 / 中的其他键。
并且默认用于收藏
我觉得 DataType String 不应该有 Hash 类型的索引而不是 Range 吗?这是什么精度:-1
在 Azure cosmos DB 文档示例中,我看到字符串的精度为 3,我不明白为什么?
如果我有 100 台设备并且每秒钟放置一次数据,那么哪种类型的索引更好?
azure-cosmosdb - COSMOS DB 集合中的多个分区
1) 我有一个 Cosmos DB 集合,其中包含大约 500k 个文档,并且由属性“SITEID”分区。在查询请求选项中,只能传递一个分区键值。在我的情况下,我有查询需要执行 (1,2,3,4) 中的 SITEID,其中 SiteID 是分区键。
比如我的SP如下:
我正在使用下面的 SQL API 代码调用上面的 SP。
在上面的 SQL API 代码中,PartitionKey 属性只支持 Single 值。我需要传递几个分区值的地方。还有其他选择吗?
2) “EnableCrossPartitionQuery”属性仅在 FeedOptions 中可用,在 Request Options 类中不可用。Client.ExecuteStoredProcedureAsync 仅支持 RequestOptions 参数,不支持 FeedOptions。现在我需要一次跨所有分区执行存储过程。是否有任何其他选项可以在 ExecuteStoredProcedureAsync 方法中传递 EnableCrossPartitionQuery。
例如)