5

我有一个用户和项目的二分图。我想在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:虽然,因为每个用户都有年龄属性,所以不需要指定确切的节点类型,是吗?无论如何我必须指定它吗?

2:第二,由于类型属性是完全重复的,创建一个具有属性用户的特定节点和一个具有属性项目的特定节点,而不是将所有用户节点和所有项目节点与其适当的根节点相关联,这不是更容易吗?

3:在neo4j中,创建节点时,除了创建节点的参数类型之外,还有什么方法可以指定它的类型?(就像每组节点都保存在数据库的不同部分中,因此查询或获取特定组确实只需要指向该区域而不是遍历所有节点并检查类型参数)

4

1 回答 1

2

好吧,没有黄金法则。如果你有很多一种类型的节点,你可能想要使用和索引,否则和类型节点也很好。取决于您的用例,因为非常大的超级节点正在减慢速度,并且被更好地视为索引。

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

于 2012-08-24T13:49:42.560 回答