You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Cypher DSL生成包含point.withinBBox()的Neo4j查询Condition

使用Neo4j Cypher DSL构建边界框查询Condition

要实现对应point.withinBBox()逻辑的Condition实例,你可以直接利用Cypher DSL提供的函数工具类来构建,以下是具体实现步骤和代码:

核心代码实现

// 定义Location节点的引用,对应Cypher中的(loc:Location)
Node loc = Cypher.node("Location").named("loc");

// 构建边界框的西南角点
Expression southwest = Functions.point(
        Cypher.mapOf(
                "longitude", Cypher.literalOf(2.592773),
                "latitude", Cypher.literalOf(46.346928)
        )
);

// 构建边界框的东北角点
Expression northeast = Functions.point(
        Cypher.mapOf(
                "longitude", Cypher.literalOf(18.654785),
                "latitude", Cypher.literalOf(55.714735)
        )
);

// 构建point.withinBBox对应的Condition
Condition bboxCondition = Functions.pointWithinBBox(
        loc.property("coordinates"),
        southwest,
        northeast
);

// 和已有条件链式拼接(沿用你当前的方式)
Condition conditions = Conditions.noCondition();
conditions = conditions.and(bboxCondition);

生成的Cypher验证

上述代码构建的Condition会生成你需要的WHERE子句逻辑,最终拼接成完整查询后,生成的Cypher语句与你给出的示例一致:

MATCH (loc:Location)
WHERE point.withinBBox(loc.coordinates, point({longitude: 2.592773, latitude: 46.346928}), point({longitude: 18.654785, latitude: 55.714735}))
RETURN loc

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 13:01:10