DocumentDB - 如何根据唯一ID计数订购结果

时间:2015-10-10 17:18:56

标签: azure-cosmosdb

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

=IF(B5="", IF(B4="",A4,B4), "")

我们现在想要获得一个艺术家名单,按他们拥有的粉丝数排序。因此,我希望以某种方式要求数据库根据这些文档,给我回一个{ "followerId": "userUUID", "artistId": "artistUserUUID" } 的数组,按照他们注册的关注者数量排序(如示例中的文档所示)如上所述。)

或者,我们也可以将{Array}属性添加到artistUserUUId自己的文档中,但即使在这种情况下,我仍然不确定如何基于计数来计算artistUser文档的属性(此属性是跟随者ID的数组)。

我想解决方法是添加一个存储过程或触发器来更新ORDER BY文档中的计数器属性,但我想验证这些是否是实现此计数功能的方法本地没有这样的伎俩。

1 个答案:

答案 0 :(得分:1)

除非您将关注者计数归结为艺术家用户文档(如您所建议),否则您必须获取每个关注者以实现您的目标。获取每个跟随者文档,取决于有多少文件,可能会或可能不会被禁止。如果仅将它们提取到存储过程而不是实际客户端,那么它在概念上的效率不会低于SQL GROUP_BY子句。设计存储过程以进行计数,仅返回艺术家表和计数表。一个强大的实现将逐步更新页面中的输出表,并能够在存储过程超时后重新启动。查看我在documentdb-mock中的countDocuments示例存储过程以及用于编写存储过程的"模式"在documentdb-utils的文档中,我通常如何实现这一目标。