Cosmos:从 c# / .Net 容器中的分区中获取所有项目 #CosmosClient

sai*_*avi 2 azure-cosmosdb

我创建了一个容器来存储客户的用户信息。分区键是 customerId。我想读取 customerId = X 的逻辑分区中的所有项目,这应该返回 customerId = X 的所有用户记录。.NET SDK 中的 CosmosClient 是否提供此类 API?

例子 :

class User
{
      string customerId,
      string userId,
      string userName
}
Run Code Online (Sandbox Code Playgroud)

Ank*_*jay 10

假设您使用 SQL API,则可以使用Azure Cosmos DB SDK来获取分区键的所有用户。这是示例代码:

var client = new CosmosClient("COSMOS_CONNECTION_STRING");
var container = client.GetContainer("DATABASE_NAME", "CONTAINER_NAME");
var queryDefinition = new QueryDefinition("SELECT * FROM c");
var iterator = container.GetItemQueryIterator<User>(queryDefintion,
            requestOptions: new QueryRequestOptions()
            {
                PartitionKey = new PartitionKey("CUSTOMER_ID")                                                                      
            });

var results = new List<User>();

while (iterator.HasMoreResults)
{
     var result = await iterator.ReadNextAsync();
     results.AddRange(result.Resource);
}

return results;
Run Code Online (Sandbox Code Playgroud)

  • @DavidMakogon 您好,感谢您的回复。我回答这个问题的原因是因为我觉得获取分区键的所有文档可能有点棘手,特别是对于初学者来说。鉴于我已经回答了这个问题,你建议我应该做什么? (4认同)