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