CKAN:在单个查询中删除 DataStore 中的记录列表
CKAN: delete a list of records within the DataStore in a single query
注意:我最初的问题是删除除最后N
条以外的所有记录,但用CKAN [=39=猜测这样的事情是不可能的],我想出了以下解决方案:
- 使用
datastore_search
获取total
条记录。
- 获取上次搜索中
first
条记录的ID。
- 获取从
first
记录ID到total-N
的所有记录的ID。
所以,我的问题是:如何在单个查询中删除所有标识的 ID?我尝试了以下方法:
$ curl -X POST "http://demo.ckan.org/api/3/action/datastore_delete" -d '{"filters":{"_id":1,"_id":2,"_id":3},"force":"true","resource_id":"a43bfb04-7a8b-4624-a06a-25f4165e5b2a"}' -H "Authorization: xxx"
{"help": "http://demo.ckan.org/api/3/action/help_show?name=datastore_delete", "success": true, "result": {"filters": {"_id": 3}, "resource_id": "a43bfb04-7a8b-4624-a06a-25f4165e5b2a"}}
但只删除了关于最后一个 ID (3
) 的记录。
当然,数组也不行:
$ curl -X POST "http://demo.ckan.org/api/3/action/datastore_delete" -d '{"filters":[{"_id":1},{"_id":2},{"_id":3}],"force":"true","resource_id":"a43bfb04-7a8b-4624-a06a-25f4165e5b2a"}' -H "Authorization: xxx"
{"help": "http://demo.ckan.org/api/3/action/help_show?name=datastore_delete", "success": false, "error": {"__type": "Validation Error", "filters": ["filters must be either a dict or null."]}}
有什么想法吗?或者我应该对每条要删除的记录执行查询?
自动应答。在尝试了几种组合后,我发现这个可行:
$ curl -X POST "http://demo.ckan.org/api/3/action/datastore_delete" -d '{"filters":{"_id":[1,2]},"force":"true","resource_id":"a43bfb04-7a8b-4624-a06a-25f4165e5b2a"}' -H "Authorization: xxx"
即字典必须与单个(键,值)对一起发送,_id
和 _id
的值的 数组 分别。
注意:我最初的问题是删除除最后N
条以外的所有记录,但用CKAN [=39=猜测这样的事情是不可能的],我想出了以下解决方案:
- 使用
datastore_search
获取total
条记录。 - 获取上次搜索中
first
条记录的ID。 - 获取从
first
记录ID到total-N
的所有记录的ID。
所以,我的问题是:如何在单个查询中删除所有标识的 ID?我尝试了以下方法:
$ curl -X POST "http://demo.ckan.org/api/3/action/datastore_delete" -d '{"filters":{"_id":1,"_id":2,"_id":3},"force":"true","resource_id":"a43bfb04-7a8b-4624-a06a-25f4165e5b2a"}' -H "Authorization: xxx"
{"help": "http://demo.ckan.org/api/3/action/help_show?name=datastore_delete", "success": true, "result": {"filters": {"_id": 3}, "resource_id": "a43bfb04-7a8b-4624-a06a-25f4165e5b2a"}}
但只删除了关于最后一个 ID (3
) 的记录。
当然,数组也不行:
$ curl -X POST "http://demo.ckan.org/api/3/action/datastore_delete" -d '{"filters":[{"_id":1},{"_id":2},{"_id":3}],"force":"true","resource_id":"a43bfb04-7a8b-4624-a06a-25f4165e5b2a"}' -H "Authorization: xxx"
{"help": "http://demo.ckan.org/api/3/action/help_show?name=datastore_delete", "success": false, "error": {"__type": "Validation Error", "filters": ["filters must be either a dict or null."]}}
有什么想法吗?或者我应该对每条要删除的记录执行查询?
自动应答。在尝试了几种组合后,我发现这个可行:
$ curl -X POST "http://demo.ckan.org/api/3/action/datastore_delete" -d '{"filters":{"_id":[1,2]},"force":"true","resource_id":"a43bfb04-7a8b-4624-a06a-25f4165e5b2a"}' -H "Authorization: xxx"
即字典必须与单个(键,值)对一起发送,_id
和 _id
的值的 数组 分别。