在子文档中对父文档进行内部联接

时间:2016-11-20 09:44:08

标签: join azure-cosmosdb

我有一个看起来像这样的文件:

{
    "id": "some guid",
    "name": "Bob",
    "following": [
        {
            "id": "some_guid",
            "priority": true
        }
    ]
}

这个想法是用户可以关注其他用户。

我想要做的是,对于给定的用户,获取他们所关注的所有用户的ID和名称。该名称未存储在"以下"集合。

如果我使用SQL,我会做这样的事情:

SELECT u.following_id, u.priority, j.name FROM users INNER JOIN j on u.following_id = j.id

DocumentDb SQL中的等价物是什么?

1 个答案:

答案 0 :(得分:3)

DocumentDB中的等价物是两次往返。首先获取包含该用户所关注的数组的用户文档。然后构建一个大的OR子句并使用它来获取他们所关注的文档。

或者,您可能希望将关系存储在另一个方向。因此,不是存储一个用户在该用户文档中跟随的人,而是在每个关注者中存储followBy列表。然后,您可以在一次往返中执行ARRAY_CONTAINS查询。

您还可能希望查看Azure的流分析产品,因为它具有图形查询功能。