azure - Azure CosmosDB 存储过程以更新所有项目的字段
问题描述
假设我们有一个包含以下项目的容器
{
location:CA,
bool: false
}
{
location:CA,
bool: false
}
{
location:CA,
bool: false
}
我们如何编写存储过程来查询所有项目并将所有项目的 bool 字段从 false 更新为 true?我还没有找到任何参考资料,我知道 CosmosDB 存储过程只支持查询而不是更新或删除。
解决方案
这个存储过程代码:
// SAMPLE STORED PROCEDURE
function sample() {
var collection = getContext().getCollection();
// Query all documents in one logic partition
var isAccepted = collection.queryDocuments(
collection.getSelfLink(),
'SELECT * FROM root r',
function (err, feed, options) {
if (err) throw err;
if (!feed || !feed.length) {
var response = getContext().getResponse();
response.setBody('no docs found');
}
else {
feed.forEach(element => {
element.bool = true;
collection.replaceDocument(element._self, element,function (err){
if (err) throw err;
})
})
var response = getContext().getResponse();
response.setBody("replace success");
}
});
if (!isAccepted) throw new Error('The query was not accepted by the server.');
}
顺便说一句,您的分区键应该是/location
.
推荐阅读
- machine-learning - 如何使用遗传算法 (GA) 在 SMS Spam/Ham 数据集中进行特征选择
- java - 为什么我的组根是抽象的以及如何修复它?
- c++ - Valgrind 在 C++ 应用程序中报告与 CRYPTO_zalloc 相关的内存泄漏,但没有其他信息
- ios - Swift:尝试使用 UISlider 在 AVAudioPlayerNode 中控制时间
- json - 使用 golang 从 http 网络服务器中提取特定和最新数据
- c# - 使用 gmail 发送电子邮件工作正常,但域邮件服务器抛出错误?
- firebase - 创建文档时使用 mergeFields 设置的 Firestore 文档无法按预期工作
- autodesk-bim360 - 使用 BIM 360 API 上传后,发布日志中的文档提取失败
- c# - NetMQ.FiniteStateMachineException: Rep.XRecv - 无法接收另一个请求
- javascript - 可拖动/可排序嵌套问题(onDragStart 中的错误)