Запрос всех сообщений от друзей с помощью пользовательских данных создателя сообщения в Gremlin - PullRequest
1 голос
/ 03 марта 2020

Я пытаюсь реализовать функциональность социальных сетей в приложении, где

  • a Пользователь: я имеет Пользователь: друзья
  • каждый пользователь имеет сообщений
  • каждый сообщение может иметь комментарии

в настоящее время Я могу получить все сообщения друзей пользователя, используя

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?

Я также думал об использовании Нептуна для обработки части отношений функции, и наличие mongodb содержит все данные, которые должны быть отображены.

например, Получение всех идентификаторов поста от друзей. Затем запросите почтовые данные в mongodb.

Это лучше использовать для graphdbs?

1 Ответ

1 голос
/ 05 марта 2020

Вот пример, который строит структуру, подобную той, которую вы описываете, используя вложенные шаги project. Поскольку у меня нет ваших данных, я использовал набор данных о воздушном маршруте, но, надеюсь, это показывает шаблон, который я имел в виду для вашего запроса.

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]]  
...