代码之家  ›  专栏  ›  技术社区  ›  Dogu Arslan

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

  •  0
  • Dogu Arslan  · 技术社区  · 7 年前

    我在documentdb中创建了一个分区集合,我希望能够从该集合中查询特定分区中的所有文档,而无需执行跨分区查询。举个例子,假设我正在将Car对象写入这个集合,Partition Key字段是汽车制造商. 制造商是一个字符串。

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

    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 回复  |  直到 7 年前
        1
  •  1
  •   Nick Chapsas    7 年前

    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);
        }
    }
    
    推荐文章