如何根据顶点 ID 按 Gremlin 服务器 (Titan 1.0) 响应进行分组?
How Can I group by Gremlin Server (Titan 1.0) Response on Basis of Vertex Id?
我正在尝试以下查询:
g.V(835776).out('Follow').in('WallPost').order().by('PostedTimeLong', decr).range(0,2)
我收到以下回复:
{
"requestId": "524462bc-5e46-40bf-aafd-64d00351dc87",
"status": {
"message": "",
"code": 200,
"attributes": { }
},
"result": {
"data": [
{
"id": 1745112,
"label": "Post",
"type": "vertex",
"properties": {
"PostImage": [
{
"id": "sd97-11ejc-2wat",
"value": ""
}
],
"PostedByUser": [
{
"id": "sc2j-11ejc-2txh",
"value": "orbitpage@gmail.com"
}
],
"PostedTime": [
{
"id": "scgr-11ejc-2upx",
"value": "2016-06-19T09:17:27.6791521Z"
}
],
"PostMessage": [
{
"id": "sbob-11ejc-2t51",
"value": "Hello @[tag:Urnotice_Profile|835776|1] , @[tag:Abhinav_Srivastava|872488|1] and @[tag:Rituraj_Rathore|839840|1]"
}
],
"PostedTimeLong": [
{
"id": "scuz-11ejc-2vid",
"value": 636019246476802029
}
]
}
},
{
"id": 1745112,
"label": "Post",
"type": "vertex",
"properties": {
"PostImage": [
{
"id": "sd97-11ejc-2wat",
"value": ""
}
],
"PostedByUser": [
{
"id": "sc2j-11ejc-2txh",
"value": "orbitpage@gmail.com"
}
],
"PostedTime": [
{
"id": "scgr-11ejc-2upx",
"value": "2016-06-19T09:17:27.6791521Z"
}
],
"PostMessage": [
{
"id": "sbob-11ejc-2t51",
"value": "Hello @[tag:Urnotice_Profile|835776|1] , @[tag:Abhinav_Srivastava|872488|1] and @[tag:Rituraj_Rathore|839840|1]"
}
],
"PostedTimeLong": [
{
"id": "scuz-11ejc-2vid",
"value": 636019246476802029
}
]
}
}
],
"meta": { }
}
}
因为相同的 post 在两个不同的 ID 上被 posted,所以它会响应两次。我想根据顶点 ID 对响应进行分组(两者都具有相同的顶点 ID。或者我只想从它们中获取一个对象,因为它们只是相同的。
我尝试了以下查询,但对我没有任何帮助:
g.V(835776).out('Follow').in('WallPost').groupBy{it.id}.order().by('PostedTimeLong', decr).range(0,3)
g.V(835776).out('Follow').in('WallPost').group().by(id).order().by('PostedTimeLong', decr).range(0,3)
如何根据顶点 id 按结果分组。
查询
g.V(835776).out('Follow').in('WallPost').group().by(id).order().by('PostedTimeLong', decr).range(0,3)
应该有效,尽管 order().by()
和 range()
没有效果。但是,我不认为你真的想要 group()
,你更有可能想要 dedup()
:
g.V(835776).out('Follow').in('WallPost').dedup().order().by('PostedTimeLong', decr).limit(3)
我正在尝试以下查询:
g.V(835776).out('Follow').in('WallPost').order().by('PostedTimeLong', decr).range(0,2)
我收到以下回复:
{
"requestId": "524462bc-5e46-40bf-aafd-64d00351dc87",
"status": {
"message": "",
"code": 200,
"attributes": { }
},
"result": {
"data": [
{
"id": 1745112,
"label": "Post",
"type": "vertex",
"properties": {
"PostImage": [
{
"id": "sd97-11ejc-2wat",
"value": ""
}
],
"PostedByUser": [
{
"id": "sc2j-11ejc-2txh",
"value": "orbitpage@gmail.com"
}
],
"PostedTime": [
{
"id": "scgr-11ejc-2upx",
"value": "2016-06-19T09:17:27.6791521Z"
}
],
"PostMessage": [
{
"id": "sbob-11ejc-2t51",
"value": "Hello @[tag:Urnotice_Profile|835776|1] , @[tag:Abhinav_Srivastava|872488|1] and @[tag:Rituraj_Rathore|839840|1]"
}
],
"PostedTimeLong": [
{
"id": "scuz-11ejc-2vid",
"value": 636019246476802029
}
]
}
},
{
"id": 1745112,
"label": "Post",
"type": "vertex",
"properties": {
"PostImage": [
{
"id": "sd97-11ejc-2wat",
"value": ""
}
],
"PostedByUser": [
{
"id": "sc2j-11ejc-2txh",
"value": "orbitpage@gmail.com"
}
],
"PostedTime": [
{
"id": "scgr-11ejc-2upx",
"value": "2016-06-19T09:17:27.6791521Z"
}
],
"PostMessage": [
{
"id": "sbob-11ejc-2t51",
"value": "Hello @[tag:Urnotice_Profile|835776|1] , @[tag:Abhinav_Srivastava|872488|1] and @[tag:Rituraj_Rathore|839840|1]"
}
],
"PostedTimeLong": [
{
"id": "scuz-11ejc-2vid",
"value": 636019246476802029
}
]
}
}
],
"meta": { }
}
}
因为相同的 post 在两个不同的 ID 上被 posted,所以它会响应两次。我想根据顶点 ID 对响应进行分组(两者都具有相同的顶点 ID。或者我只想从它们中获取一个对象,因为它们只是相同的。
我尝试了以下查询,但对我没有任何帮助:
g.V(835776).out('Follow').in('WallPost').groupBy{it.id}.order().by('PostedTimeLong', decr).range(0,3)
g.V(835776).out('Follow').in('WallPost').group().by(id).order().by('PostedTimeLong', decr).range(0,3)
如何根据顶点 id 按结果分组。
查询
g.V(835776).out('Follow').in('WallPost').group().by(id).order().by('PostedTimeLong', decr).range(0,3)
应该有效,尽管 order().by()
和 range()
没有效果。但是,我不认为你真的想要 group()
,你更有可能想要 dedup()
:
g.V(835776).out('Follow').in('WallPost').dedup().order().by('PostedTimeLong', decr).limit(3)