Как получить сообщение (Vertex) от всех пользователей, за которыми я следил (Edge) в Titan с помощью Gremlin

Я получаю список всех пользователей, за которыми я следил, используя следующий запрос: -

g.v (2304) .out ("Follow")

Ответ :

{

"success": true,
"results": 

[

{

"Type": "User",
"CreatedTime": "2016-03-16T18:39:48.5000845Z",
"Username": "[email protected]",
"FirstName": "Joany",
"CoverImageUrl": "https://s3-ap-southeast-1.amazonaws.com/urnotice/OrbitPage/User/Sumit/WallPost/947174ae-3e60-4dd0-877f-cc988fae3888.jpg",
"ImageUrl": "https://s3-ap-southeast-1.amazonaws.com/urnotice/OrbitPage/User/Sumit/WallPost/f4f6901c-64c4-425b-929b-43936c53eaba.png",
"LastName": "Ashtana",
"Gender": "male",
"_id": ​768,
"_type": "vertex"

},
{

"Type": "User",
"CreatedTime": "2016-04-05T16:36:49.3740440Z",
"Username": "[email protected]",
"FirstName": "Maria",
"CoverImageUrl": "https://s3-ap-southeast-1.amazonaws.com/urnotice/images/companyRectangleImageNotAvailable.png",
"ImageUrl": "https://s3-ap-southeast-1.amazonaws.com/urnotice/users/female_professional.png",
"LastName": "Sharapova",
"Gender": "female",
"_id": ​5120256,
"_type": "vertex"

},
{

"Type": "User",
"CreatedTime": "2016-04-12T07:42:18.8036554Z",
"Username": "[email protected]",
"FirstName": "Abhi",
"CoverImageUrl": "https://s3-ap-southeast-1.amazonaws.com/urnotice/OrbitPage/User/Sumit/WallPost/afd0d047-0d1c-4391-8f88-95f7775c615f.jpg",
"ImageUrl": "https://s3-ap-southeast-1.amazonaws.com/urnotice/OrbitPage/User/Sumit/WallPost/fd0842d4-579b-4896-9525-945f8f718816.JPG",
"LastName": "Sri",
"Gender": "male",
"_id": ​12800512,
"_type": "vertex"

},
{

"Type": "User",
"CreatedTime": "2016-04-15T07:51:34.3867249Z",
"Username": "[email protected]",
"FirstName": "Goop",
"CoverImageUrl": "",
"ImageUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg",
"LastName": "Chup",
"Gender": "NA",
"_id": ​17928960,
"_type": "vertex"

},
{

"Type": "User",
"CreatedTime": "2016-04-20T03:25:30.0753729Z",
"Username": "[email protected]",
"FirstName": "Kunal",
"CoverImageUrl": "https://s3-ap-southeast-1.amazonaws.com/urnotice/OrbitPage/User/Sumit/WallPost/ee167d15-52bb-4f4f-99fb-038f27eee1dc.jpeg",
"ImageUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg",
"LastName": "Sharma",
"Gender": "NA",
"_id": ​23041024,
"_type": "vertex"

}
],
"version": "2.5.0",
"queryTime": ​21.94298

}

И я получаю сообщение конкретного пользователя, используя следующий запрос:

gv (396800) .in ('WallPost'). sort {a, b -> b.PostedTime ‹=> a.PostedTime}. () [0..3] .transform {[postInfo: it, commentsInfo : it.in ('Комментарий'). sort {a, b -> b.PostedTime ‹=> a.PostedTime}. () [0..5] .transform {[commentInfo: it, commentedBy: it.in ('Создано')]}, userInfo: it.in ('Создано')]}

И я получаю ответ:

{
"success": true,
"results": [
{
  "postInfo": {
    "PostImage": "",
    "Type": "Post",
    "PostedByUser": "[email protected]",
    "PostedTime": "2016-04-29T11:48:17.5069984Z",
    "PostedTimeLong": ​635975272975069984,
    "PostMessage": "testing new post. on pooja",
    "_id": ​30729984,
    "_type": "vertex"
  },
  "commentsInfo": [

  ],
  "userInfo": [
    {
      "Type": "User",
      "CreatedTime": "2016-04-20T03:25:30.0753729Z",
      "Username": "[email protected]",
      "FirstName": "Kunal",
      "CoverImageUrl": "https://s3-ap-southeast-1.amazonaws.com/urnotice/OrbitPage/User/Sumit/WallPost/ee167d15-52bb-4f4f-99fb-038f27eee1dc.jpeg",
      "ImageUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg",
      "LastName": "Sharma",
      "Gender": "NA",
      "_id": ​23041024,
      "_type": "vertex"
    }
  ]
}
],
"version": "2.5.0",
"queryTime": ​383.759295
}

Я хочу получать сообщения всех пользователей, за которыми я следил, в порядке убывания в соответствии с PostTime сообщения Vertex. Я много пробовал, но у меня нет никакого подхода, как мне этого добиться.


person Sumit Chourasia    schedule 10.05.2016    source источник


Ответы (1)


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

g.v(2304).out('Follow').in('WallPost').sort {
    a, b -> b.PostedTime <=> a.PostedTime
}.()[0..3]
.transform {
    [
        postInfo: it,
        commentsInfo: it.in('Comment').sort {
            a, b -> b.PostedTime <=> a.PostedTime
        }.()[0..5].
        transform {
            [
                commentInfo: it,
                commentedBy: it.in('Created')
            ]
        },
        userInfo:it.in('Created')
    ]
}

Таким образом, он предоставит вам список всех сообщений ваших подписчиков в порядке убывания PostedTime.

person Community    schedule 12.05.2016