Jer*_*yal 14 azure azure-cosmosdb
什么是查询或其他一些快速方法来删除与集合中where条件匹配的所有文档?
我想要的东西,DELETE * FROM c WHERE c.DocumentType = 'EULA'但显然,它不起作用.
注意:我不是在寻找任何C#实现.
Gau*_*tri 14
我想要像DELETE*FROM c WHERE c.DocumentType ='EULA'之类的东西,但显然它不起作用.
不支持以这种方式删除文档.您需要先使用SELECT查询选择文档,然后单独删除它们.如果需要,可以编写用于在存储过程中获取和删除的代码,然后执行该存储过程.
Ben*_*E G 12
这有点旧,但只是有相同的要求,并找到了@Gaurav Mantri所写的具体例子.
存储过程脚本在这里:
转到Azure门户,从上面获取脚本,并在需要删除的database-> collection中创建一个新的存储过程.
然后在存储过程窗格的底部,脚本textarea下面是放入参数的位置.在我的情况下,我只想删除所有,所以我用过:
"SELECT c._self FROM c"
我猜你的是:
"SELECT c._self FROM c WHERE c.DocumentType ='EULA'"
然后点击"保存并执行".Viola,一些文件被删除.在Azure门户中工作之后,我切换了Azure DocumentDB Studio,更好地了解了发生的情况.即我可以看到我被限制删除18次(在结果中返回).出于某种原因,我无法在Azure门户中看到这一点.
无论如何,即使每次执行仅限于一定数量的删除,也非常方便.执行sp也会受到限制,因此您不能仅仅粘贴键盘.我想我会删除并重新创建Collection,除非我有一个可管理的文件要删除(思考<500).
Mimi Gentz @Microsoft的道具在上面的链接中共享脚本.
HTH
小智 8
我写了一个脚本来列出所有文件并删除所有文件,它可以修改为删除选定的文件。
var docdb = require("documentdb");
var async = require("async");
var config = {
host: "https://xxxx.documents.azure.com:443/",
auth: {
masterKey: "xxxx"
}
};
var client = new docdb.DocumentClient(config.host, config.auth);
var messagesLink = docdb.UriFactory.createDocumentCollectionUri("xxxx", "xxxx");
var listAll = function(callback) {
var spec = {
query: "SELECT * FROM c",
parameters: []
};
client.queryDocuments(messagesLink, spec).toArray((err, results) => {
callback(err, results);
});
};
var deleteAll = function() {
listAll((err, results) => {
if (err) {
console.log(err);
} else {
async.forEach(results, (message, next) => {
client.deleteDocument(message._self, err => {
if (err) {
console.log(err);
next(err);
} else {
next();
}
});
});
}
});
};
var task = process.argv[2];
switch (task) {
case "listAll":
listAll((err, results) => {
if (err) {
console.error(err);
} else {
console.log(results);
}
});
break;
case "deleteAll":
deleteAll();
break;
default:
console.log("Commands:");
console.log("listAll deleteAll");
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17259 次 |
| 最近记录: |