【发布时间】:2020-03-03 12:02:05
【问题描述】:
我正在尝试在应用中实现社交媒体功能
- 一个 User:me 有 User:friends
- 每个用户都有帖子
- 每个帖子都可以有评论
目前我可以获取用户朋友使用的所有帖子
g.V().has("name", "test1").both("is_friend").both("posted_by").values("post_body").toList()
返回
{
"status_code": 200,
"data": "['test3 post', 'test4 post', 'test5 post']",
"time": 0.22941160202026367
}
但我需要的是使用作者的数据查询帖子,例如
{
posts: {
post_body: "test3 post",
author: {
name: "test3"
}
}
}
如何在 gremlin 中执行此操作?
这也是使用graphdbs的最佳方式吗?
我还考虑过使用 neptune 来处理函数的关系部分,并让 mongodb 包含所有需要显示的数据。
例如 从朋友那里获取所有帖子 ID。然后在mongodb中查询post数据。
这对 graphdbs 有更好的用途吗?
【问题讨论】:
-
你看过
project这一步了吗?您可以使用它来生成您需要的所有结果的地图。至于将帖子存储在图表之外,我认为这是一件值得考虑的事情。如果帖子可能很长,一种实现方式是将图表视为所有活动的索引,并包含对实际帖子的引用而不是帖子文本。我见过人们都这样做。 -
@KelvinLawrence 将检查
project步骤。我实际上已经尝试仅使用 mongodb 来实现它。查询非常复杂,恐怕当有大量用户时它不会很好地扩展。现在我正在检查 graphdbs,我意识到在查询 edges 时,graphdbs 非常棒,但对于内部节点却不是很好。这就是为什么我正在考虑使用两者的混合体。我的下一个问题是成本。因为这意味着我们将不得不使用 aws neptune 和 aws documentdb。 -
@KelvinLawrence 我们也将在功能上进行实时聊天。而且恐怕 graphdbs 不适合那种用例。
-
我见过人们构建由 GraphDB 支持的聊天应用程序,但当然所有用例都不同,有不同的要求。
-
我添加了一个使用嵌套
project步骤作为答案的示例。希望这会有所帮助。
标签: mongodb gremlin amazon-neptune