Космос : Получить все элементы из раздела в контейнере в c# / .Net #CosmosClient

#azure-cosmosdb

Вопрос:

Я создал контейнер для хранения информации о пользователях для клиентов. Ключом раздела является идентификатор пользователя. Я хочу прочитать все элементы в логическом разделе с идентификатором пользователя = X, который должен возвращать все записи пользователей с идентификатором пользователя = X. Доступен ли такой API в CosmosClient в .NET SDK?

Пример :

 class User
{
      string customerId,
      string userId,
      string userName
}
 

Комментарии:

1. Пожалуйста, помните о тегах — я удалил несколько несвязанных тегов (например cosmos , не имеет никакого отношения к Cosmos DB и не имеет containers ). Что касается дополнительной информации, необходимой при редактировании вашего вопроса: Пожалуйста, покажите немного примеров данных, ваш запрос/код, выходные данные и ошибки/проблемы, с которыми вы сталкиваетесь.

Ответ №1:

Предполагая, что вы используете 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;
 

Комментарии:

1. Обратите внимание, что вопрос ОП, как написано, не по теме: он не содержит кода, выходных данных или конкретных вопросов; это было общее требование, и я предложил, что им нужно добавить, в своих комментариях. Лучше всего не просто писать код для кого-то, когда он сначала не представил свою собственную работу.

2. Привет @DavidMakogon, спасибо за ваш ответ. Причина, по которой я ответил на этот вопрос, заключается в том, что я чувствовал, что получение всех документов для ключа раздела может быть немного сложным, особенно для начинающих. Учитывая, что я уже ответил на вопрос, что вы предлагаете мне сделать?