如何在OrientDB中通过边属性的AND条件查询符合要求的Product顶点
模型定义
- 顶点类:
Product - 顶点类:
Parameter - 边类型:
ProductHasParameter,包含属性value
查询需求
查找所有同时满足以下两个条件的Product顶点:
- 存在一条
ProductHasParameter边,value等于<SOME_VALUE_1>,且指向@rid=1的Parameter顶点 - 存在另一条
ProductHasParameter边,value等于<SOME_VALUE_2>,且指向@rid=2的Parameter顶点
示例说明
业务问题:哪些Product满足「颜色=红色」且「价格=1000美元」?
模型层面描述:哪些Product类的顶点拥有两条ProductHasParameter边,需同时满足:
- 一条边的
value=red,指向@rid=8的Parameter(对应颜色参数) - 另一条边的
value=1000$,指向@rid=12的Parameter(对应价格参数)
备注:存在@rid=2的Product顶点,它没有任何关联边。预期查询结果仅包含@rid=1的Product顶点。
Cypher查询实现
MATCH (prd:Product)-[hasParameterColor:ProductHasParameter]->(paramColor:Parameter {@rid:"8"}) MATCH (prd:Product)-[hasParameterPrice:ProductHasParameter]->(paramPrice:Parameter {@rid:"12"}) WHERE hasParameterColor.value="red" AND hasParameterPrice.value="1000$" RETURN prd
内容的提问来源于stack exchange,提问作者yasuro
相关产品推荐
相关产品推荐

