首页 文章

查询Azure文档数据库中分区集合中特定分区的所有文档的最有效方法是什么?

提问于
浏览
0

我在Document db中创建了一个Partitioned Collection,我希望能够从这个集合中查询特定分区中的所有文档,而无需进行跨分区查询 . 举例来说,假设我正在将Car对象写入此Collection,而Partition Key字段是Car.Manufacturer . 制造商是一个字符串 .

我想从我的分区集合中查询属于特定制造商的所有Car文档 .

最有效的方法是什么?目前我在下面做,我知道这会导致交叉分区查询 - 即使我在查询中明确设置分区键(到“梅赛德斯”)

IDocumentQuery<Car> query = documentClient.CreateDocumentQuery<Car>(
                UriFactory.CreateDocumentCollectionUri("dbName", "CollectionName"))
                .Where(c => c.Manufacturer == "Mercedes")
                .AsDocumentQuery();

List<Car> mercedesCars = new List<Car>();

            while (query.HasMoreResults)
            {
                foreach (Car car in await query.ExecuteNextAsync<Car>())
                {
                    data.Add(car);
                }
            }

我正在寻找一个解决方案来进行此查询而不会导致交叉分区查询?

1 回答

  • 1

    您可以通过为查询提供 FeedOptions 并设置 PartitionKey 属性来指定分区 .

    您的查询将如下所示:

    var feedOptions = new FeedOptions { PartitionKey = new PartitionKey("Mercedes") };
    IDocumentQuery<Car> query = documentClient.CreateDocumentQuery<Car>(
                UriFactory.CreateDocumentCollectionUri("dbName", "CollectionName"), feedOptions)
                .Where(c => c.Manufacturer == "Mercedes")
                .AsDocumentQuery();
    
    List<Car> mercedesCars = new List<Car>();
    
    while (query.HasMoreResults)
    {
        foreach (Car car in await query.ExecuteNextAsync<Car>())
        {
            data.Add(car);
        }
    }
    

相关问题