知道为什么当我使用 REST API 在 Cosmos DB 中执行下面的查询时出现下面的错误吗?没有 order by 的相同查询工作正常......
我在这两种情况下都设置了标头"x-ms-documentdb-query-enablecrosspartition: True",并且使用 PHP 来发出请求。
有效的多分区查询:
从 c 中选择 c.id、c.name、c.age,其中 c.age = 30
多分区查询有错误:
SELECT c.id, c.name, c.age FROM c where c.age = 30 order by c.age asc
错误:
客户端错误:
POST https://yeapp-cosmosdb.documents.azure.com//dbs/-JJZAA==/colls/-JJZAL+WPKw=/docs导致
400 BadRequest响应:{“code”:“BadRequest”,“message”:“网关无法直接提供所提供的跨分区查询。这是一个(截断的...)
我需要在Azure 数据资源管理器上使用“ GROUP BY ”子句,但我认为它不受支持。
有人有解决或避免分组的想法吗?
此致,
我已经看到在特定日期从流分析作业向 Cosmos DB 写入大量数据。它不应该在一天内写出大量的文件。我必须检查那天是否有重复的文件。
是否有任何查询/任何方法可以在 Cosmos DB 中查找重复记录?
azure azure-stream-analytics stream-analytics azure-cosmosdb azure-cosmosdb-sqlapi
为什么 Azure Cosmos DB 部署需要这么长时间?当我尝试通过 ARM 模板部署 Azure Cosmos DB (SQL API) 时,大约需要 20 分钟才能完成部署。这是为什么?
我正在尝试使用以下查询来查看数据库中是否有重复项
SELECT c.VariantNo, count(1) AS jongel FROM c where c.brand = 'XXXX' AND c.Consumer = 'XXX_V2' GROUP BY c.VariantNo HAVING jongel > 1
Run Code Online (Sandbox Code Playgroud)
但我收到接近 HAVING 的语法错误
如果我有多个具有相同 VariantNo 的文档,我如何才能找到?
我正在尝试使用本地设置将新项目添加到 cosmos 数据库中。
这是我的批量插入代码:
private async Task AddSubscription(EnableOrDisableSubscriptionCommand command, SubscriptionAction subscriptionAction, IList<int> notificationCategoryTypes)
{
List<Task> bulkOperations = new List<Task>();
foreach (var notificationCategory in notificationCategoryTypes)
{
var notificationTypes = Utility.GetNotificationTypes((NotificationCategoryType)notificationCategory);
foreach (var notificationType in notificationTypes)
{
foreach (var payerAccountSubscriptions in command.Subscriptions)
{
if (payerAccountSubscriptions.AccountNumbers?.Any() ?? false)
{
foreach (var accountNumber in payerAccountSubscriptions.AccountNumbers.Where(a => !string.IsNullOrEmpty(a)))
{
bulkOperations.Add(_repository.Create(subscriptionAction, notificationType,
payerAccountSubscriptions.ColCoId, payerAccountSubscriptions.PayerNumber, accountNumber, command.UserRole,
command.UserId));
}
}
else
{
bulkOperations.Add(_repository.Create(subscriptionAction, notificationType,
payerAccountSubscriptions.ColCoId, payerAccountSubscriptions.PayerNumber, null, command.UserRole,
command.UserId));
}
}
}
}
await Task.WhenAll(bulkOperations);
}
public …Run Code Online (Sandbox Code Playgroud) 在 .net core sdk FeedOptions 中提供分区键与将其作为查询条件有什么区别?例如,如果您想列出给定分区键中的所有项目。您应该在条件中使用提要选项还是分区键?
标准中的分区键
SELECT * FROM c where c.PartitionKey = "some partition key"
Run Code Online (Sandbox Code Playgroud)
.net core 与 feedoptions
var allDocs = await (from d in client.CreateDocumentQuery<Document>(UriFactory.CreateDocumentCollectionUri(databaseId, "TestCollection"),
new FeedOptions { PartitionKey = new PartitionKey("some partition key") })
select d)
.AsDocumentQuery<Document>().ExecuteNextAsync<Document>();
Run Code Online (Sandbox Code Playgroud)
当我创建自定义索引策略(其中分区键被排除在索引之外)时,出现了问题。因此,在查看 RU/s 成本时,它似乎在排除时进行扫描,而不是在使用默认索引策略时进行索引查找。
这是否意味着如果您需要跨分区查询,您需要索引分区键,如果您只需要在给定分区键内查询,您可以排除它 - 假设您在 FeedOptions 中给出分区键?
我希望通过 azure 函数或其他方式使用计划作业捕获 Cosmos DB(JSON 文档)中更改的数据,而不影响数据库的在线性能,因为 Web 应用程序/移动应用程序正在使用 API 调用将数据读取和写入到 Cosmos DB 中。我想要用于离线 ETL 和分析目的的数据,就像 Oracle 提供离线重做日志文件的方式一样。
最近,微软在 Azure CosmosDB 产品中引入了事务批量操作功能。在所有示例和每个文档中,似乎批次内的所有操作都需要位于同一分区中。想知道是否有办法实现跨分区的事务批处理操作。
我的用例是创建数千个文档,分区键是文档 ID。在每个操作中,我创建 2 个位于同一分区中的文档(具有相同的 id),并且我需要将它们作为事务的一部分来执行。我需要批处理数千个这样的操作。
假设我有以下 Cosmos DB 容器,其中包含可能的文档类型分区:
{
"id": <string>,
"partitionKey": <string>, // Always "item"
"name": <string>
}
Run Code Online (Sandbox Code Playgroud)
{
"id": <string>,
"partitionKey": <string>, // Always "group"
"items": <array[string]> // Always an array of ids for items in the "item" partition
}
Run Code Online (Sandbox Code Playgroud)
我有一个“组”文档的 ID,但我没有该文档本身。我想做的是执行一个查询,为我提供“组”文档引用的所有“项目”文档。
我知道我可以执行两个查询:1)检索“group”文档,2)在“item”分区上使用 IN 子句执行查询。
由于除了获取 id 列表之外,我不关心“组”文档,因此是否可以构造一个查询来仅使用“组”文档 id 来获取我想要的所有“项目”文档?