ulk*_*kas 5 database-design neo4j graph-databases
我有一个用户和项目的二部图。我想在neo4j中实现这个。有什么办法可以区分节点吗?现在,唯一的区别在于财产价值:
node A properties:
type=user, age=18, name=user123
node B properties:
type=item, price=123, name=item1234
Run Code Online (Sandbox Code Playgroud)
并在 cypher 中查询图形如下所示:
-get all users:
start n=node:node_auto_index('type:user') return n;
start n=node:node_auto_index('age:*') return n;
Run Code Online (Sandbox Code Playgroud)
1:虽然,因为每个用户都有age属性,所以不需要指定确切的节点类型,是吗?无论如何我必须指定它吗?
2:第二,由于 type 属性是完全重复的,创建 1 个具有属性 user 的特定节点和一个具有属性 item 的特定节点,并且将所有用户节点和所有 item 节点与其适当的根节点相关联不是更容易吗?
3:在neo4j中有什么方法可以在创建节点时指定它的类型而不是创建节点的参数类型?(类似于每组节点都保存在数据库中的不同部分,因此查询或选取特定组只需要指向该区域,而不是遍历所有节点并检查类型参数)
嗯,没有黄金法则。如果您有很多一种类型的节点,您可能需要使用 and 索引,否则 and 类型节点也很好。取决于您的用例,因为真正的大型超级节点会减慢速度,并且最好将其视为索引。
如果您知道节点类型有一个唯一的属性,那么您当然可以从该属性中推断出它,并type在您的情况下跳过该属性。
| 归档时间: |
|
| 查看次数: |
1090 次 |
| 最近记录: |