如何在Gremlin查询语句中传递多个id或参数值
Gremlin查询中传递多个ID/参数值的方法
针对你给出的排除多个ID的查询场景,可以直接用Gremlin内置的谓词实现多参数传递,具体用法如下:
- 排除多个指定ID(对应你的
hasNot示例需求)
推荐用hasId搭配without谓词实现,语义更清晰,性能也优于hasNot(T.id, xxx)的写法:
// 方式1:先定义要排除的ID列表,再传入谓词 def excludeIds = [1, 2, "user-001", "order-045"] g.V().hasId(without(excludeIds)) // 方式2:直接内联传入多个ID g.V().hasId(without(1, 2, "user-001", "order-045"))
- 匹配多个指定ID
如果是要查询命中指定ID的顶点,用within谓词即可,用法和without完全一致:
def targetIds = [10, 20, "product-123"] g.V().hasId(within(targetIds))
- 普通属性传递多个参数的通用写法
如果需要对非ID的顶点/边属性做多值匹配/排除,同样可以用within、without谓词:
// 查询状态为已完成、已取消的订单 g.V().hasLabel("order").has("status", within("FINISHED", "CANCELED")) // 排除年龄为18、20的用户 g.V().hasLabel("user").has("age", without(18, 20))
注意:所有主流Gremlin实现对参数格式要求一致,标准的集合类型(List、Array等)都可以直接传入within/without中,不需要额外做格式转换。
内容的提问来源于stack exchange,提问作者Thirumal
相关产品推荐
相关产品推荐

