gpt4 book ai didi

c++ - 如何在ArangoDb AQL查询中指定数据库?

转载 作者:行者123 更新时间:2023-12-01 14:43:21 24 4
gpt4 key购买 nike

如果在特定的ArangoDB服务器上定义了多个数据库,我如何指定要对其运行AQL查询的数据库?

通过包括数据库名称(在下面的[DBNAME]中替代)的REST端点运行查询,即:

/_db/[DBNAME]/_api/cursor

似乎不起作用。错误消息显示“未知路径/ _db / [DBNAME] / _ api / cursor”

这是我必须在查询本身中指定的东西吗?

另外:我试图运行的查询是:
FOR col in COLLECTIONS() RETURN col.name

首先,我还没有找到一种通过REST API设置“当前”数据库的方法。另外,我正在使用fuerte从C++访问REST API。

最佳答案

汤姆·雷格纳(Tom Regner)在这里应引起提示,以促使提出此答案的询问。我在这里发表我的发现,以作为帮助可能遇到此问题的其他人的答案。

我不知道这是不是更严重的错误,缺点还是对我而言尚不清楚的api警告...但是...

为了在端点(例如完整端点' / _db / [DBNAME / _api / cursor ')中注册' / _db / [DBNAME / “前缀,并在:: arangodb的 header 中使用该前缀: :fuerte::Request,仅调用以下命令是不够的(自arangodb 3.5.3起,在此答复时可用的fuerte版本)。

std::unique_ptr<fuerte::Request> request;
const char *endpoint = "/_db/[DBNAME/_api/cursor";
request = fuerte::createRequest(fuerte::RestVerb::Post,endpoint);
// and adding any arguments to the request using a VPackBuilder...
// in this case the query (omitted)

要使数据库名称包含在此类请求中,您必须另外调用以下命令:
request->header.parseArangoPath(endpoint);

否则,似乎会导致有关 '未知路径'的错误。

注1:只需设置数据库成员变量,即
request->header.database = "[DBNAME]";

不起作用。

注2:表示不使用前缀' / _db / [DBNAME] / '前缀的操作,似乎可以在'当前'数据库中正常使用。 (至少对我来说,它似乎停留在“_system”上,因为据我所知,似乎没有端点可以通过HTTP REST Api进行更改。)

关于c++ - 如何在ArangoDb AQL查询中指定数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60364381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com