我从mongodb db获得以下信息,我想将其导出到neo4j图:
"_id" : 1366,
"fields" : {
"title" : "Beef Steak",
"keywords" : [
"beef",
"steak"
],
"categories" : {
"category" : "Meat",
"subcategory" : null,
"verified" : false,
"predicted" : true
},
"nutrients" :
{
"tag_name" : "FASAT",
"value" : 1.352,
"unit" : "g",
"title" : "Saturated fatty acids"
},
...
我一直在阅读一些neo4j建模示例,但我不确定我的模型。
这就是我的想法:
节点:
关系:
“has_nutrients”关系名称将包含“value”属性,以指示食物中有多少营养素。
我认为2,3和4关系有可能执行不同的查询: - “肉类”的子类别, - 食物的类别和子类别 - 所有具有“意大利面”类别的食物。也许有一种更简单的方法。
答案 0 :(得分:1)
如果你想不出关系更好的名字,那就做一些像
这样的事情food - [HAS_KEYWORD] -> keyword
food - [HAS_SUBCATEGORY] -> subcategory
subcategory - [BELONGS_TO] -> category
food - [HAS_NUTRIENT] -> nutrient
对于你的子类别,我通常喜欢从孩子到父母的方向,但我通常更喜欢偏好。
您需要区分类别和子类别吗?如果类别为Meat
且子类别为Pork
,您是否需要实际链接到Meat
?您可以只与Pork
建立联系,这意味着Meat
可以减少关系。
({name='Pork', type='Subcategory'}) -[BELONGS_TO]-> ({name='Meat', type='Category'})
({name='Pork Chops', type='Food'}) -[HAS_SUBCATEGORY]-> ({name='Pork', type='Subcategory'})
这将减少关系,因为您将能够暗示子类别中的类别。
除了上面的建议,其余的看起来非常面向图形,看起来像一个坚实的设计。