如何使用HTTP将数据插入ArangoDB?

时间:2015-08-08 08:10:35

标签: arangodb

您能帮助我了解如何在现有集合中插入数据。集合名称是汽车。我正在尝试向其中插入新数据。我这样做:

curl -X PUT --data-binary @- --dump - http://localhost:8529/_db/testdb/_api/collection/cars/ '{name: "carname"}'

但在此之后没有任何反应。看起来我想念语法。

我是否理解我只有在向DB提出请求时才应使用/_api/cursor

{"query": "FOR car IN cars RETURN car"}

2 个答案:

答案 0 :(得分:3)

如果要将新数据插入现有集合,则必须使用POST动词,例如:

curl -X POST -d "{ \"field\": \"value\" }" --dump - http://localhost:8529/_db/myDatabase/_api/document?collection=cars

PUT动词用于替换现有文档。更多示例可以在Working with Documents using REST下的文档中找到。

Cursors用于通过REST API执行AQL查询,并使用POST, PUT and DELETE verbs

答案 1 :(得分:2)

使用命令@-中的curl --data-binary @- ...,您要求curl从stdin读取。这意味着命令不会执行任何操作,直到您按CTRL-D才能完成。但是,如果按CTRL-D,它会将数据发送到服务器。

可以指定要发送的数据而无需从stdin读取数据。这可以通过curl --data-binary <data>完成,<data>是要发送的JSON。请注意,它必须是有效的JSON并在您使用的shell中正确转义。上面示例中的'{name: "carname"}'没有正确的JSON(缺少属性名称name周围的引号)。它应该是'{"name": "carname"}'

正如@ yojimbo87指出的那样,插入操作应该通过HTTP POST而不是PUT发送,集合名称应该作为URL参数传递。

这是完整的命令:

curl -X POST --data-binary '{"name": "carname"}' --dump - "http://localhost:8529/_db/testdb/_api/document?collection=cars"

上面的内容适用于Bash,但是,它不能在Windows命令行中运行,因为那里的字符串不应该包含在'中,而是"