Azure cosmosdb Cosmos DB值递减顺序

Azure cosmosdb Cosmos DB值递减顺序,azure-cosmosdb,Azure Cosmosdb,我使用Cosmos DB C库创建了一个助手方法,使用continuationtoken按降序检索行。但是,当我尝试按降序排序时,它不会返回任何行。查询在没有orderby或orderbydescending的情况下工作。请让我知道我需要更正什么才能以正确的顺序检索行 public static async Task<(IEnumerable<T> resultRows, string responseContinuation)> GetIAlltemsAsyncOr

我使用Cosmos DB C库创建了一个助手方法,使用continuationtoken按降序检索行。但是,当我尝试按降序排序时,它不会返回任何行。查询在没有orderby或orderbydescending的情况下工作。请让我知道我需要更正什么才能以正确的顺序检索行

  public static async Task<(IEnumerable<T> resultRows, string responseContinuation)> GetIAlltemsAsyncOrderByCount(Expression<Func<T,bool>> predicate, Expression<Func<T,object>> orderby,bool descending, int MaxItemCountPerQuery,string continuationToken="")
    {
        var uri = UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId);

        var feedOptions = new FeedOptions
        {
            MaxItemCount = MaxItemCountPerQuery
        };

        string responseContinuation = "";

        if (!string.IsNullOrEmpty(continuationToken))
        {
            feedOptions.RequestContinuation = continuationToken;
            responseContinuation = continuationToken;
        }

        var resultRows = new List<T>();

            using (var query = descending ? client.CreateDocumentQuery<T>(uri, feedOptions).Where(predicate).OrderByDescending(orderby).AsDocumentQuery() : client.CreateDocumentQuery<T>(uri, feedOptions).Where(predicate).OrderBy(orderby
                ).AsDocumentQuery())
            {


                if (query.HasMoreResults)
                {
                    var result = await query.ExecuteNextAsync<T>();

                    responseContinuation = result.ResponseContinuation;

                    resultRows.AddRange(result);


                    /* process result */

                }
            }

            return (resultRows, responseContinuation);

    }

根据您的描述,我在我这边检查了这个问题,发现我可能会遇到类似的问题。然后我使用Fiddler捕捉网络跟踪,如下所示:

声明如下:

索引种类:散列相等查询、范围相等查询、范围或顺序查询或空间查询


范围支持高效的相等查询,范围查询使用>,=,感谢您的洞察力。是否有显示如何创建索引的网页链接?根据您的信息,我需要datetime列的索引。默认情况下,所有Azure Cosmos DB数据都被索引。您可以使用创建具有特定索引策略的集合,或更新现有集合的索引策略。或者,您可以修改Azure Portal上现有集合的索引策略。您需要特定数据类型的特定索引路径和索引类型,您可以遵循详细信息。据我所知,您的datetime列将存储为字符串数据,基于默认策略的上述修改策略可以满足您的要求。感谢您的帮助。在我的情况下,没有任何东西被索引。我已经和cosmosDB的工程师谈过了。他和我已经做了很多事情来修复,但尽管它现在适用于日期属性,但它不适用于自定义整数字段。我使用的是c SDK,有人告诉我要继续寻找continuation令牌,并一直等待有效的数据集,但结果却是事与愿违。总而言之,我认为有一个bug,我不相信微软现在愿意修复它。