Database design neo4j中的二部图实现

Database design neo4j中的二部图实现,database-design,neo4j,graph-databases,Database Design,Neo4j,Graph Databases,我有一个用户和项目的二分图。我想在neo4j中实现这一点。有没有办法区分节点?目前,唯一的区别在于属性值: node A properties: type=user, age=18, name=user123 node B properties: type=item, price=123, name=item1234 在cypher中查询图形如下所示: -get all users: start n=node:node_auto_index('type:user') return n; sta

我有一个用户和项目的二分图。我想在neo4j中实现这一点。有没有办法区分节点?目前,唯一的区别在于属性值:

node A properties:
type=user, age=18, name=user123
node B properties:
type=item, price=123, name=item1234
在cypher中查询图形如下所示:

-get all users:
start n=node:node_auto_index('type:user') return n;
start n=node:node_auto_index('age:*') return n;
1:虽然,因为每个用户都有age属性,所以不需要指定确切的节点类型,是吗?我必须指定它吗

2:第二,由于类型属性是完全重复的,那么创建一个具有属性user的特定节点和一个具有属性item的特定节点,不比将所有用户节点和所有item节点关联到其适当的根节点更容易吗

3:在neo4j中,在创建节点时,除了创建节点的参数类型外,是否有其他方法指定其类型?(类似于每组节点都保存在数据库的不同部分中,因此查询或拾取特定组确实需要指向该区域,而不是遍历所有节点并检查类型参数)

, 没有黄金法则。如果您有许多同一类型的节点,您可能需要使用and索引,否则and类型的节点也很好。这取决于您的用例,因为真正大的超级节点会减慢速度,因此最好将其作为索引处理


如果您知道节点类型上有一个唯一的属性,那么您当然可以从该属性中推断出它,并在您的情况下跳过属性
类型

关系如何?如果我创建了一个,我必须设置一个像[:KNOWS]这样的名称/类型。为什么不通过属性来处理呢?这是因为类型与关系记录一起存储,因此查找速度比普通属性快得多,普通属性是磁盘上的指针。它就像一个超级属性:)是的,在节点上也有这样的功能不是更好吗?毕竟,由于版本2.0,这个功能被称为标签。