当前位置: 首页 > 知识库问答 >
问题:

基于特征差查找节点的Neo4j密码查询

鲜于谦
2023-03-14

例如,我有以下价格的产品:

Product1.price = 100
Product2.price = 305
Product3.price = 10000
Product4.price = 1000
Product5.price = 220

产品之间没有相互连接的关系。

我需要根据初始价格值(密码查询参数),找到一组(路径)的产品,通过最大价格增量(密码查询参数)彼此区分。

Product1.price = 100
Product5.price = 220
Product2.price = 305

共有1个答案

廉展鹏
2023-03-14

作为一种替代解决方案,查询速度应该快得多,但需要更多的维护和护理来保持正常工作(尤其是在快速变化的产品价格数据中),您可以按照价格升序在产品节点之间创建关系,并将增量保留为关系属性。

以下是如何使用APOC过程创建此代码:

MATCH (p:Product)
WITH p 
ORDER BY p.price ASC
WITH apoc.coll.pairsMin(COLLECT(p)) as products
UNWIND products as prodPairs
WITH prodPairs[0] as prod1, prodPairs[1] as prod2
CREATE (prod1)-[r:NextProd]->(prod2)
SET r.delta = prod2.price - prod1.price

下面是如何在设置好后查询它。

WITH {startPrice:50, delta:150} as params
WITH params, params.startPrice + params.delta as ceiling
MATCH (start:Product)
WHERE params.startPrice <= start.price <= ceiling
WITH start, params
ORDER BY start.price ASC
LIMIT 1
MATCH (start)-[r:NextProd*0..]->(product:Product)
WHERE ALL(rel in r WHERE rel.delta <= params.delta)
RETURN DISTINCT product
 类似资料:
  • 假设我们有下面的Neo4j模式(简化了,但它显示了重要的一点)。有两种类型的节点和<代码>版本s通过关系的s可以通过关系连接。同样,这些关系有两个属性和,表示有效时间跨度-其中一个或两个可以(在Neo4j术语中不存在)表示无限。 编辑:节点和关系的有效性日期是独立的(尽管示例巧合地显示它们是对齐的)。 该示例显示了两个

  • 有人在neo4j上用gremlin或Cypher查询这么大的图形吗?

  • 我必须查询一个属性值,然后在此基础上从不同的节点找到另一个属性值。 以下是我的XML的外观: 示例:我需要查询的属性值位于第101行。我必须取引用节点的节点id,在这个例子中是“3”: 然后我需要在XML中进一步搜索,它应该找到id="3"的节点,然后寻找名为"长度"的属性,并返回它的值,在这个例子中是"10": 我已经编写了以下XSLT代码,但需要添加更多代码以正确获取长度部分: 请建议如何获得

  • 我试图想出一个密码查询,可以返回某些父母的孩子节点,其中孩子的父母都是期望的父母。 我在这个控制台上有一个示例数据集:http://console.neo4j.org/?id=nsq8c1 在该示例中,我们有包含父节点的组节点,以及正好有2个父节点的子节点,并且所有组中的所有父节点与每个其他父节点都有一个子节点。现在我想要回父母都在第一组的孩子。 我尝试的示例查询是

  • 我是新4J的新手。 (Node1)-[Rel1]->(Node3) (每个节点和发布在'Rights'属性中都有'admin'字符串。) 如果用户具有正确的'user',则路径应为: (Node1)-[Rel2]-(Node2)-[Rel3]-(Node3) (因为Rel1关系在“Rights”属性中没有“user”字符串。) 谢了。

  • 下面是我的上下文的概念示例: 我有一个抽象类,名为:(包含一个属性为String) 我有一个子类,名为: 我有一个子类,名为: 使用Spring-Data-Neo4j,我将a。 我创建了一个测试类,以便在图中插入一个和一个<整口井都发生了= 现在,我想进行这种密码查询: 检索id=123的用户 因此,我必须找到更有效的方法来检查所有用户节点(FacebookUser和TwitterUser的联合)