Neo4j 1.9.2:查询/筛选和统计多个节点类型
在Neo4j 1.9.2中,我想计算一组节点中每个节点的所有关系 我的所有节点都有三个属性:Neo4j 1.9.2:查询/筛选和统计多个节点类型,neo4j,Neo4j,在Neo4j 1.9.2中,我想计算一组节点中每个节点的所有关系 我的所有节点都有三个属性:类型、id、和创建的。他们都通过“跟随”关系联系在一起。以下是它们如何组合在一起的示例: user('id:1')-[follows]->review('id:1') user('id:1')-[follows]->user('id:2') user('id:2')-[follows]->review('id:1') 你明白了 结果应该是这样的: [ { followers
类型
、id
、和创建的
。他们都通过“跟随”关系联系在一起。以下是它们如何组合在一起的示例:
user('id:1')-[follows]->review('id:1')
user('id:1')-[follows]->user('id:2')
user('id:2')-[follows]->review('id:1')
你明白了
结果应该是这样的:
[
{
followers: 2,
id: 1
created: 2013-12-13T12:13:42-08:00
type: review
},
{
followers: 1,
id: 2,
created: 2012-02-13T12:13:43-08:00
type: user
},
{
followers: 0,
id: 1,
created: 2012-02-13T12:13:43-08:00,
type: user
}
]
start user1=node:user('id:1'),
user2=node:user('id:2'),
review1=node:review1('id:1')
match user1<-[user1_f:follows]-(),
user2<-[user2_f:follows]-(),
review1<-[review1_f:follows]-()
return user1, count(user1_f),
user2, count(user2_f),
review1, count(review1_f);
start users=node:user('id:(1 OR 2 OR 3 OR 4)')
match user<-[f:follows]-(),
return user, count(f);
我提供的数据基本上如下所示:
{
users: [1, 2],
reviews: [1]
}
我尝试过这样的查询:
[
{
followers: 2,
id: 1
created: 2013-12-13T12:13:42-08:00
type: review
},
{
followers: 1,
id: 2,
created: 2012-02-13T12:13:43-08:00
type: user
},
{
followers: 0,
id: 1,
created: 2012-02-13T12:13:43-08:00,
type: user
}
]
start user1=node:user('id:1'),
user2=node:user('id:2'),
review1=node:review1('id:1')
match user1<-[user1_f:follows]-(),
user2<-[user2_f:follows]-(),
review1<-[review1_f:follows]-()
return user1, count(user1_f),
user2, count(user2_f),
review1, count(review1_f);
start users=node:user('id:(1 OR 2 OR 3 OR 4)')
match user<-[f:follows]-(),
return user, count(f);
start user1=node:user('id:1'),
user2=node:user('id:2'),
review1=节点:review1('id:1')
匹配USER1如果您想运行许多节点的计数操作,请考虑使用这样的索引:
[
{
followers: 2,
id: 1
created: 2013-12-13T12:13:42-08:00
type: review
},
{
followers: 1,
id: 2,
created: 2012-02-13T12:13:43-08:00
type: user
},
{
followers: 0,
id: 1,
created: 2012-02-13T12:13:43-08:00,
type: user
}
]
start user1=node:user('id:1'),
user2=node:user('id:2'),
review1=node:review1('id:1')
match user1<-[user1_f:follows]-(),
user2<-[user2_f:follows]-(),
review1<-[review1_f:follows]-()
return user1, count(user1_f),
user2, count(user2_f),
review1, count(review1_f);
start users=node:user('id:(1 OR 2 OR 3 OR 4)')
match user<-[f:follows]-(),
return user, count(f);
start users=node:user('id:(1或2或3或4)'
匹配用户是的,我们很想更新,不幸的是目前还不可能。但它已经在路线图上了!所以我听到的是,除非对所有可能的组合进行索引,否则无法跨多个完全任意的类型执行此操作。我认为最好只对每个类型执行一个查询(因为我们没有那么多不同的类型)。谢谢我终于开始实施这个优化,响应时间减少了10倍。非常有帮助!