您能帮助我了解如何在现有集合中插入数据。集合名称是汽车。我正在尝试向其中插入新数据。我这样做:
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"}
答案 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命令行中运行,因为那里的字符串不应该包含在'
中,而是"
。