【发布时间】:2020-04-09 04:02:49
【问题描述】:
我有一个带有 JSON 文档的集合
{
"type": "OrderHistory",
"values": [
{
"CustomerId": "8990",
"DeliveryInstructions": "",
"UpdateDate": "2020-02-07T14:33:50",
"OrderId": "00716",
"Items": [
{
"ProductId": "402",
}
],
"id": "0071661617+Settled"
}
],
"id": "c57ab11a-2aec-45a4-a3e8-063598e15061",
"_rid": "9-kVAPFOVXkBAAAAAAAAAA==",
"_self": "dbs/9-kVAA==/colls/9-kVAPFOVXk=/docs/9-kVAPFOVXkBAAAAAAAAAA==/",
"_etag": "\"35008246-0000-0200-0000-5e8dc41a0000\"",
"_attachments": "attachments/",
"_ts": 1586349082
}
问题在这里 CustomerId 是 partitionkey 。我们必须根据条件删除记录。我使用下面的方法来删除记录,该方法适用于没有子行的普通 json 。可能是因为分区值作为子行值出现,它的没有按预期工作。
///Deleting records from collection based on documentId
private async static Task DeleterecordByDocumentID(DocumentClient client, string databaseName,
string collectionName, string documentName, string Partitionkeyvalue)
{
var docUri = UriFactory.CreateDocumentUri(databaseName, collectionName, documentName);
RequestOptions options = new RequestOptions { PartitionKey = new
PartitionKey(Partitionkeyvalue) };
var deleteresponse = await client.DeleteDocumentAsync(docUri, options);
}
如果有人能建议删除分区键显示为子行的 cosmos DB 记录的方法,那将很有帮助。提前致谢。
【问题讨论】:
-
你能分享你的容器定义吗?我想知道你是如何在那里定义分区键的(我的意思是你是如何指定路径的)?