You need to enable JavaScript to run this app. 如何在ArangoDB UDF中返回集合内的文档数据
优惠活动
大模型
产品
解决方案
定价
更多

如何在ArangoDB UDF中返回集合内的文档数据

ArangoDB UDF返回集合指定文档实现方案

错误原因

你当前代码中的FOR d IN Dim_City FILTER d.id >= number RETURN d是AQL查询语法,无法直接在JavaScript编写的UDF中运行,UDF运行在ArangoDB的JavaScript引擎中,执行AQL需要调用内置的数据库操作接口。

正确实现代码

/* path/to/file.js */
'use strict';

// 引入ArangoDB内置数据库操作模块
const db = require('@arangodb').db;

function dimcity(number) {
  // 执行AQL查询,参数通过绑定变量传递避免注入风险
  const cursor = db._query(
    `FOR d IN Dim_City
     FILTER d.id >= @inputNumber
     RETURN d`,
    { inputNumber: number }
  );
  // 将查询游标转换为文档数组返回
  return cursor.toArray();
}

module.exports = dimcity;

注意事项

  • 执行AQL必须调用db._query()方法,不可直接将AQL语法嵌入JS代码逻辑
  • 查询参数需通过第二个参数的绑定变量对象传递,不要直接拼接字符串到AQL语句,避免注入风险
  • db._query()返回的是查询游标对象,需要调用toArray()方法才能得到实际的文档集合
  • 如果需要动态指定查询集合,可使用带@@前缀的绑定变量,示例如下:
    db._query(
      `FOR d IN @@collectionName
       FILTER d.id >= @inputNumber
       RETURN d`,
      { 
        "@collectionName": "Dim_City",
        inputNumber: number 
      }
    );
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 08:18:04