azure - 是否可以在触发器内执行跨分区查询?
问题描述
将文档插入文档数据库集合时,我必须实现整数属性的自动增量。我想通过使用预创建触发器来解决这个问题,它只是找到最大值并增加它。这种方法适用于简单的收集,但在使用分区收集时会出现问题:即使在指定{ enableCrossPartitionQuery: true }
我的查询后,我的查询也仅限于我插入文档的分区。
function trigger(){
var context = getContext();
var collection = context.getCollection();
var request = context.getRequest();
// document to be created in the current operation
var documentToCreate = request.getBody();
//query for max value
var filterQuery = 'SELECT value MAX(r.Id) FROM root r';
var result = collection.queryDocuments(collection.getSelfLink(), filterQuery,
{ enableCrossPartitionQuery: true }, callback);
function callback(err, documents, responseOptions) {
if(err) throw new Error("Error" + err.message);
var maxId = documents[0] || 0;
documentToCreate["Id"] = ++maxId;
request.setBody(documentToCreate);
}
}
那么可以从触发器执行扇出查询吗?
解决方案
与存储过程相同,触发器上下文限制为 1 个分区。更多详细信息:https ://docs.microsoft.com/en-us/azure/cosmos-db/partition-data#design-for-scale (查询边界和事务)
推荐阅读
- regex - 如何在文档中使用正则表达式对字符串进行完全匹配以进行修改
- ios - “不能调用非函数类型‘字符串’的值?
- android - Android sdkmanager 为任何参数提供 IllegalArgumentException
- excel - 宏在呈现中间步骤之前整体执行
- react-native - 如何将切换抽屉添加到我的导航?
- r - XBRL/Finstr 问题与 R 中的 SEC 数据有关
- powershell - Powershell 脚本在“复制项目”命令中失败
- javascript - Discord.js 使用 ids 而不是提及?
- javascript - 滑块在初始页面加载时行为不端,但在刷新时效果很好(chrome)
- java - 在节点的特定位置获取元素