Mongodb 使用帖子创建者查询来自好友的所有帖子';Gremlin中的用户数据
我正在尝试在一个应用程序中实现社交媒体功能,其中Mongodb 使用帖子创建者查询来自好友的所有帖子';Gremlin中的用户数据,mongodb,gremlin,amazon-neptune,Mongodb,Gremlin,Amazon Neptune,我正在尝试在一个应用程序中实现社交媒体功能,其中 用户:我拥有用户:朋友 每个用户都有帖子 每个帖子可以有评论 目前,我可以获取用户朋友使用的所有帖子 g.V().has(“name”、“test1”)。两者(“是朋友”)。两者(“发布者”)。值(“发布主体”)。toList() 返回 { "status_code": 200, "data": "['test3 post', 'test4 post', 'test5 post']", "time": 0.229411602020
- 用户:我拥有用户:朋友
- 每个用户都有帖子
- 每个帖子可以有评论
g.V().has(“name”、“test1”)。两者(“是朋友”)。两者(“发布者”)。值(“发布主体”)。toList()
返回
{
"status_code": 200,
"data": "['test3 post', 'test4 post', 'test5 post']",
"time": 0.22941160202026367
}
但我需要的是用作者的数据来查询帖子
{
posts: {
post_body: "test3 post",
author: {
name: "test3"
}
}
}
我如何在小精灵中做到这一点
这也是使用GraphDB的最佳方式吗
我还考虑使用neptune处理函数的关系部分,并让mongodb包含所有需要显示的数据
e、 g
正在从朋友处获取所有帖子id。然后在mongodb中查询post数据
这是GraphDB的更好用法吗?下面是一个示例,它使用嵌套的
项目
步骤构建了一个类似于您所描述的结构。由于我没有您的数据,我使用了AirRoute数据集,但希望这显示了我为您的查询所考虑的模式
g.V('3').
project('airport','route-data').
by('code').
by(project('in-count','out-count').
by(__.in().count()).
by(out().count()))
在控制台中运行时,您将获得此输出
gremlin> g.V('3').
......1> project('airport','route-data').
......2> by('code').
......3> by(project('in-count','out-count').
......4> by(__.in().count()).
......5> by(out().count()))
==>[airport:AUS,route-data:[in-count:82,out-count:80]]
您是否看过
项目步骤?你可以用它来生成你需要的所有结果的地图。至于把帖子存放在图表之外,我认为这是一件很好的事情。如果帖子可能很长,一种实现是将图表视为所有活动的索引,并包含对实际帖子的引用,而不是帖子文本。我见过有人用两种方法来做这件事。@KelvinLawrence将检查project
step。实际上,我已经尝试过仅使用mongodb来实现它。查询非常复杂,我担心当有大量用户时,它的伸缩性不会很好。现在我正在查看GraphDB,我意识到GraphDB在查询边时非常有用,但在查询内部节点时效果不太好。这就是为什么我考虑使用两者的混合。我下一个关心的问题是成本。因为这意味着我们将不得不使用aws neptune和aws documentdb。@KelvinLawrence我们也将在功能上进行实时聊天。恐怕GraphDB不适合这种用例。我见过有人用GraphDB构建聊天应用程序,但当然所有用例都不同,有不同的要求。我添加了一个使用嵌套项目步骤的示例作为答案。希望这能有所帮助。