当我尝试使用 BulkExecutor 更新 CosmosDb 中的属性之一时出现错误。错误消息是“索引超出范围。必须为非负且小于集合的大小。
参数名称:索引"
重要的一点 - 我没有在我的集合中定义分区键。
这是我的代码:
SetUpdateOperation<string> player1NameUpdateOperation = new SetUpdateOperation<string>("Player1Name", name);
var updateOperations = new List<UpdateOperation>();
updateOperations.Add(player1NameUpdateOperation);
var updateItems = new List<UpdateItem>();
foreach (var match in list)
{
string id = match.id;
updateItems.Add(new UpdateItem(id, null, updateOperations));
}
var executor = new Microsoft.Azure.CosmosDB.BulkExecutor.BulkExecutor(_client, _collection);
await executor.InitializeAsync();
var executeResult = await executor.BulkUpdateAsync(updateItems);
var count = executeResult.NumberOfDocumentsUpdated;
我错过了什么?
最佳答案
如果我在没有分区键的集合上运行批量执行程序,我会得到同样的错误。如果我使用确实有它的集合运行它并指定它,则批量执行程序可以正常工作。
很确定他们现在不通过批量执行程序 api 支持它,只是使用普通的 cosmos api 来更新文档作为现在的解决方法。
关于azure-cosmosdb - 在 CosmosDb 中使用 BulkExecutor 时索引无效异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53698740/