Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用帖子创建者查询来自好友的所有帖子';Gremlin中的用户数据_Mongodb_Gremlin_Amazon Neptune - Fatal编程技术网

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构建聊天应用程序,但当然所有用例都不同,有不同的要求。我添加了一个使用嵌套
项目
步骤的示例作为答案。希望这能有所帮助。