0

我有以下来自 mongodb 数据库的信息,我想导出到 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 建模示例,但我不确定我的模型。

这就是我的想法:

节点:

  • 食物
  • 关键词
  • 类别
  • 子类别
  • 养分

关系:

  1. 食物 - rel_name -> 关键字
  2. 食物 - rel_name -> 类别
  3. 食物 - rel_name -> 子类别
  4. 类别 - rel_name -> 子类别
  5. 食物 - has_nutrients -> 营养

“has_nutrients”关系名称将包含一个“值”属性,以指示食物含有多少营养素。

我考虑了 2,3 和 4 种关系来执行不同的查询:-“肉类”类别的子类别,-食物的类别和子类别,-具有“意大利面”类别的所有食物。也许有更简单的方法。

4

1 回答 1

1

如果您想不出更好的关系名称,请执行以下操作

food - [HAS_KEYWORD] -> keyword
food - [HAS_SUBCATEGORY] -> subcategory
subcategory - [BELONGS_TO] -> category
food - [HAS_NUTRIENT] -> nutrient

对于您的子类别,我通常喜欢从孩子到父母的方向,但我通常更喜欢偏好。

您需要区分类别和子类别吗?就像 category isMeat和 subcategory is一样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'})

这将减少关系,因为您将能够从子类别中暗示类别。

除了上述建议之外,其余部分看起来非常面向图形,并且看起来像是一个可靠的设计。

于 2013-05-03T03:22:47.097 回答