azure 如何在使用ReadItemAsync时只传递分区密钥?- Cosmos DB

aoyhnmkz  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(113)

我正在尝试运行ReadItemAsync仅对分区键。该键是一个7位数的数字,用户将搜索。分区键存在于同一容器中,但多次,因为我们已经根据月份分割数据,因此,每个分区键将存在12次,但ID将更改。
代码的字面意思是:var feedIterator = await Container.ReadItemAsync<JObject>("id", new PartitionKey(partitionKey));
数据库架构:
| 身份证|/分区密钥|
| - ------|- ------|
| 1234 - 1111 - 2222 - 9f4a-8fea7044faf4型柴油机|小行星1200001|
| 编号:1234 - 1111 - 2222 - 9d1e-49096|小行星1200001|
| 编号:1234 - 1111 - 2222-A6AB-F249|小行星1200001|
| 1234 - 1111 - 2222-巴31 - 422ccccd1aef|小行星1200001|
| 1234 - 1111 - 2222-八溴二苯醚|小行星1200001|
| 编号:1234 - 1111 - 2222 - 89a0-c5434c3192d0|小行星1200001|
| 编号:1234 - 1111 - 2222 - 8fb-9d5fdd0ab811|小行星1200001|
干杯,山姆

8yparm6h

8yparm6h1#

如果您知道要读取的文档的Id和分区键值,则可以使用container.ReadManyItemsAsync

List<(string, PartitionKey)> itemList = new List<(string, PartitionKey)>
{
  ("abcd1234-1111-2222-9f4a-8fea7044faf4", new PartitionKey("1200001")),
  ("abcd1234-1111-2222-9d1e-49096cc32731", new PartitionKey("1200001")),
  ("abcd1234-1111-2222-a6ab-f249eed57eb7", new PartitionKey("1200001")),
...
;

Console.WriteLine("\nItems in read list:" + itemList.Count);
FeedResponse<SalesOrder> feedResponse = await container.ReadManyItemsAsync<SalesOrder>(

完整示例:www.example.comhttps://github.com/Azure/azure-cosmos-dotnet-v3/blob/master/Microsoft.Azure.Cosmos.Samples/Usage/ItemManagement/Program.cs#L425
如果您不知道ID而只知道分区键值,那么您可以执行查询:

using (FeedIterator<MyItem> feedIterator = container.GetItemQueryIterator<MyItem>(
    "SELECT * FROM c",
    requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("1200001")}))
{
    // ...
}

示例:https://learn.microsoft.com/azure/cosmos-db/nosql/performance-tips-query-sdk?tabs=v3&pivots=programming-language-csharp#use-single-partition-queries

相关问题