Ruby on rails 在图形数据库中存储模型和关系

Ruby on rails 在图形数据库中存储模型和关系,ruby-on-rails,neo4j,orientdb,Ruby On Rails,Neo4j,Orientdb,我有以下型号: Person (:age, :gender) Company (:name, address) Products (:price, :name) 一个人可以拥有多家公司,也可以是多家公司的客户。一家公司可以生产多种产品,但也可以购买其他公司生产的产品 如何使用OrientDB和Neo4J来表示这一点,我如何在Rails中查询这些模型/就GEM而言,什么是最佳选择 查询示例:查找由30至40岁(假设此人具有属性:age)的人拥有的公司生产的特定价格范围内的所有产品,这些人的客户大

我有以下型号:

Person (:age, :gender)
Company (:name, address)
Products (:price, :name)
一个人可以拥有多家公司,也可以是多家公司的客户。一家公司可以生产多种产品,但也可以购买其他公司生产的产品

如何使用OrientDB和Neo4J来表示这一点,我如何在Rails中查询这些模型/就GEM而言,什么是最佳选择

查询示例:查找由30至40岁(假设此人具有属性:age)的人拥有的公司生产的特定价格范围内的所有产品,这些人的客户大多数为20至30岁

注意:我还没有决定是将OrientDB还是Neo4j用于应用程序,或者可能将Neo4j用于应用程序开源部分处理的数据块

一个人可以拥有多家公司,也可以是 好几家公司。一家公司可以生产多种产品,但不能 也可以购买其他公司生产的产品

要对其进行建模,应使用标签和实体之间的关系:

你的情况可能是

(p:Person)-[:OWNED_BY]->(c:Company),
(p:Person)-[:IS_CUSTOMER]->(c:Company),
(c:Company)-[:MANUFACTURED_BY]->(pr:Product),
(c:Company)-[:USES]->(pr:Product)
你可以像这样查询它

Match (p:Products) where p.price < 2000 and p.price > 1000 with p
Match (p)<-[MANUFACTURED_BY]-(c:Company)<-[:OWNED_BY]-(owner:Person)
where owner.age < 40 and owner.age > 30 with p, c, owner
Match (c)<-[:IS_CUSTOMER]-(employee:Person) 
where employee.age < 30 and employee.age > 20 
with p, c, count(employee) as midYeareEmployee ...
匹配(p:产品),其中p.price<2000和p.price>1000与p
比赛(p)
一个人可以拥有多家公司,也可以是
好几家公司。一家公司可以生产多种产品,但不能
也可以购买其他公司生产的产品

要对其进行建模,应使用标签和实体之间的关系:

你的情况可能是

(p:Person)-[:OWNED_BY]->(c:Company),
(p:Person)-[:IS_CUSTOMER]->(c:Company),
(c:Company)-[:MANUFACTURED_BY]->(pr:Product),
(c:Company)-[:USES]->(pr:Product)
你可以像这样查询它

Match (p:Products) where p.price < 2000 and p.price > 1000 with p
Match (p)<-[MANUFACTURED_BY]-(c:Company)<-[:OWNED_BY]-(owner:Person)
where owner.age < 40 and owner.age > 30 with p, c, owner
Match (c)<-[:IS_CUSTOMER]-(employee:Person) 
where employee.age < 30 and employee.age > 20 
with p, c, count(employee) as midYeareEmployee ...
匹配(p:产品),其中p.price<2000和p.price>1000与p

匹配(p)在方向中,您的模型应如下所示:

要创建它,请执行以下命令:

create class Person extends V
create property Person.age integer
create property Person.gender string

create class Company extends V
create property Company.name string
create property Company.address string

create class Products extends V
create property Products.price integer
create property Products.name string

create class own extends E
create class costumer extends E
create class manufacture extends E
create class purchase extends E
create class manufactured extends E

insert into Person(age,gender) values (20,"M")
insert into Company(name,address) values ("company_01","address_01"),("company_02","address_02"),("company_03","address_03"),("company_04","address_04")
insert into Products(price,name) values (200,"product_01"),(750,"product_02"),(90,"product_03"),(368,"product_04"),(112,"product_05")

create edge own from #12:0 to #13:0
create edge own from #12:0 to #13:1

create edge customer from #13:2 to #12:0
create edge customer from #13:3 to #12:0

create edge manufacture from #13:2 to #14:0
create edge manufacture from #13:2 to #14:1
create edge manufacture from #13:2 to #14:2

create edge purchase from #13:2 to #14:4

create edge manufacture from #13:0 to #14:4
create edge manufacture from #13:0 to #14:0

在Orient中,您的模型应如下所示:

要创建它,请执行以下命令:

create class Person extends V
create property Person.age integer
create property Person.gender string

create class Company extends V
create property Company.name string
create property Company.address string

create class Products extends V
create property Products.price integer
create property Products.name string

create class own extends E
create class costumer extends E
create class manufacture extends E
create class purchase extends E
create class manufactured extends E

insert into Person(age,gender) values (20,"M")
insert into Company(name,address) values ("company_01","address_01"),("company_02","address_02"),("company_03","address_03"),("company_04","address_04")
insert into Products(price,name) values (200,"product_01"),(750,"product_02"),(90,"product_03"),(368,"product_04"),(112,"product_05")

create edge own from #12:0 to #13:0
create edge own from #12:0 to #13:1

create edge customer from #13:2 to #12:0
create edge customer from #13:3 to #12:0

create edge manufacture from #13:2 to #14:0
create edge manufacture from #13:2 to #14:1
create edge manufacture from #13:2 to #14:2

create edge purchase from #13:2 to #14:4

create edge manufacture from #13:0 to #14:4
create edge manufacture from #13:0 to #14:0

干杯,埃夫根,这太棒了!干杯,埃夫根,这太棒了!