Я использую Cypher
для создания некоторых данных в Neo4j
.Это довольно простая модель продукта со следующими элементами:
- Продукт (например, мобильный)
- Особенности (например, быстрая зарядка)
- Сопутствующие товары (например, закаленное стекло)
- Торговые точки (например, местный магазин, сопутствующие товары продаются через торговые точки)
Я написал запрос для вставки данных. пытается
- Создать продукт
- Создать набор функций
- Связать продукт с функцией [: HAS_FEATURES]
- Создать торговые точки x3
- Создать связанный продукт 1
- Связать продукт со связанным продуктом [: HAS_RP] и связанный продукт со всеми розетками [: SOLD_THROUGH]
- Создатьсвязанный продукт 2
- Свяжите его с товаром и розетками, как указано выше
Ниже приведен актуальный запрос
//Product
CREATE (p:Product {name: 'Cool Mobile YX Plus',
key: 'MOB0001',
version: 'X.1'
}),
//Features
(f:Features {hasQuickCharge: true,
isAvailable: true,
hasVolte: false
})
MERGE (p) -[:HAS_FEATURES]-> (f)
//Outlets (:Product level lookup)
CREATE (o1:Outlet {productType: 'New', seller: 'National_Shops', prId: 'MOB0001'})
CREATE (o2:Outlet {productType: 'New', seller: 'Local_Shops', prId: 'MOB0001'})
CREATE (o3:Outlet {productType: 'New', seller: 'Online_Shops', prId: 'MOB0001'})
//Related products
CREATE (rps1:RPS {rpId: 'TGS1108',
rpName: 'YX Plus Tampered Glass',
price: 180.99
})
WITH rps1
MATCH (ol1:Outlet {productType: 'New', prId: 'MOB0001'})
MATCH (pr1:Product {key: 'MOB0001'})
MERGE (pr1) -[:HAS_RP {typeName: 'Child'}]-> (rps1)
MERGE (rps1) -[:SOLD_THROUGH]-> (ol1)
CREATE (rps2:RPS {rpId: 'CVR0204',
rpName: 'YX Plus back cover',
price: 299.00
})
WITH rps2
MATCH (ol2:Outlet {productType: 'New', prId: 'MOB0001'})
MATCH (pr2:Product {key: 'MOB0001'})
MERGE (pr2) -[:HAS_RP {typeName: 'ChargeFor'}]-> (rps2)
MERGE (rps2) -[:SOLD_THROUGH]-> (ol2)
Теперь проблема в том, что секундасвязанный продукт создается 3 раза , где он должен был быть создан только один раз, точно так же, как первый связанный продукт.
Может кто-нибудь помочь мне понять, что я делаю неправильно?Кроме того, любая помощь в написании запроса лучше.