【问题标题】:DocumentDB - how to order results based on unique ID countDocumentDB - 如何根据唯一 ID 计数对结果进行排序
【发布时间】:2015-10-10 17:18:55
【问题描述】:

我们有一个允许用户“关注”其他用户的应用程序。当用户关注另一个用户时,我们将此数据注册为 documentDB 中的文档,如下所示:

{
    "followerId": "userUUID",
    "artistId": "artistUserUUID"
}

我们现在想要获得一个艺术家列表,按他们拥有的追随者数量排序。因此,我希望以某种方式要求数据库根据这些文档,将artistUserUUId 的数组返回给我,按他们注册的关注者数量排序(如上面给出的示例中的文档所示)。

另外,我们也愿意为 artistUser 自己的文档添加一个 Array 属性,尽管即使在这种情况下,我仍然不确定如何根据文档属性的计数来执行 ORDER BY(这属性是一个追随者 ID 的数组)。

我想一种解决方法是添加一个存储过程或触发器,它将更新 artistUser 文档中的计数器属性,但我想验证这些是否是在没​​有这样的情况下本机实现此计数功能的一种方法把戏。

【问题讨论】:

标签: azure-cosmosdb


【解决方案1】:

除非您将关注者数量非规范化为艺术家用户文档(如您所建议的那样),否则您必须获取每个关注者以实现您的目标。根据有多少,获取每个关注者文档可能会或可能不会禁止。如果您只将它们提取到存储过程而不是您的实际客户端中,那么从概念上讲,它的效率不亚于 SQL GROUP_BY 子句。设计您的存储过程来进行计数,并且只返回艺术家和计数表。一个健壮的实现将逐步更新页面中的输出表,并能够在存储过程超时后从中断处重新启动。查看 documentdb-mock 中的 countDocuments 示例存储过程以及 documentdb-utils 文档中的“编写存储过程的模式”,了解我通常如何完成此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-09
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多