如何使用 dotnet core 获取 cosmos db 中容器的所有项目
How to get all items of container in cosmos db with dotnet core
您好,我想在 cosmos DB 的数据库中获取容器的所有项目。我可以看到已经有很多可用的方法,但我没有看到任何 getAllItems 或相似的方法。
有没有像使用 LINQ 之类的简单方法来做到这一点?
谢谢
您可以像 Microsoft Azures documentation 中描述的那样使用 LINQ。
像这样的东西应该可以解决你的问题:
var db = Client.GetDatabase(databaseId);
var container = db.GetContainer(containerId);
//Get iterator or use some LINQ queries here
var iterator = container.GetItemLinqQueryable<YourType>().GetEnumerator();
如果您想使用 Linq 执行此操作,您可以执行以下操作(如此处答案中的建议:):
var db = Client.GetDatabase(databaseId);
var container = db.GetContainer(containerId);
var q = container.GetItemLinqQueryable<Person>();
var iterator = q.ToFeedIterator();
var results = await iterator.ReadNextAsync();
如果您想要非 Linq 解决方案,请使用此解决方案(取自 v3 SDK 示例:https://github.com/Azure/azure-cosmos-dotnet-v3/blob/master/Microsoft.Azure.Cosmos.Samples/Usage/ItemManagement/Program.cs#L259:
QueryDefinition query = new QueryDefinition(
"select * from sales s where s.AccountNumber = @AccountInput ")
.WithParameter("@AccountInput", "Account1");
FeedIterator<SalesOrder> resultSet = container.GetItemQueryIterator<SalesOrder>(
query,
requestOptions: new QueryRequestOptions()
{
PartitionKey = new PartitionKey("Account1"),
MaxItemCount = 1
});
while (resultSet.HasMoreResults)
{
FeedResponse<SalesOrder> response = await resultSet.ReadNextAsync();
// Work through iterator list here
}
希望对您有所帮助!
您好,我想在 cosmos DB 的数据库中获取容器的所有项目。我可以看到已经有很多可用的方法,但我没有看到任何 getAllItems 或相似的方法。
有没有像使用 LINQ 之类的简单方法来做到这一点?
谢谢
您可以像 Microsoft Azures documentation 中描述的那样使用 LINQ。
像这样的东西应该可以解决你的问题:
var db = Client.GetDatabase(databaseId);
var container = db.GetContainer(containerId);
//Get iterator or use some LINQ queries here
var iterator = container.GetItemLinqQueryable<YourType>().GetEnumerator();
如果您想使用 Linq 执行此操作,您可以执行以下操作(如此处答案中的建议:
var db = Client.GetDatabase(databaseId);
var container = db.GetContainer(containerId);
var q = container.GetItemLinqQueryable<Person>();
var iterator = q.ToFeedIterator();
var results = await iterator.ReadNextAsync();
如果您想要非 Linq 解决方案,请使用此解决方案(取自 v3 SDK 示例:https://github.com/Azure/azure-cosmos-dotnet-v3/blob/master/Microsoft.Azure.Cosmos.Samples/Usage/ItemManagement/Program.cs#L259:
QueryDefinition query = new QueryDefinition(
"select * from sales s where s.AccountNumber = @AccountInput ")
.WithParameter("@AccountInput", "Account1");
FeedIterator<SalesOrder> resultSet = container.GetItemQueryIterator<SalesOrder>(
query,
requestOptions: new QueryRequestOptions()
{
PartitionKey = new PartitionKey("Account1"),
MaxItemCount = 1
});
while (resultSet.HasMoreResults)
{
FeedResponse<SalesOrder> response = await resultSet.ReadNextAsync();
// Work through iterator list here
}
希望对您有所帮助!