我正在编写一个 API 来允许客户端使用按时间排序的数据。它有很多(每个客户端 10k+ 条记录),所以我不想将它们全部转储回客户端并在那里订购,因此我需要在服务器端订购和分页。我有分页工作,但我看不到如何添加排序。
我已经看到了对客户端进行排序的建议,但考虑到在这种情况下不起作用的潜在数据量。有解决方法吗?
这是我到目前为止所拥有的:
var options = new FeedOptions {
MaxItemCount = 25,
RequestContinuation = continuationToken
}
var query = String.Format("SELECT * FROM TimelineEvent t WHERE t.acc_id = '{0}' AND t.removed != true", accountId);
// ORDER BY in the query text doesn't appear to work
var events = client.CreateDocumentQuery<TimelineEvent>(colSelfLink, query, options).AsDocumentQuery();
var response = await query.ExecuteNextAsync<TimelineEvent>();
它不是现成的,但你可以实现一个存储过程来执行此操作。
msft 产品组在此处提供了一些代码示例:https://code.msdn.microsoft.com/windowsazure/Azure-DocumentDB-NET-Code-6b3da8af/sourcecode?fileId=132409&pathId=34503205
在服务器端脚本 JS 文件夹下查看,您将看到执行此操作的"orderby"脚本。根据您的需求进行调整并尝试一下。
ORDER BY 现在由 DocumentDB 正式支持
https://azure.microsoft.com/en-us/documentation/articles/documentdb-orderby/