2014-10-10 2 views
4

Как я могу получить последнюю вставленную _key в ArangoDB с запросом AQL? Я поместил элемент в коллекцию, следующий элемент должен содержать элемент, созданный _key. Как получить эту _key?Последнее вставленное _key в ArangoDB с AQL?

+0

Вы имеете в виду запрос AQL INSERT, который должен возвращать сгенерированный ключ (ы)? Или в запрос выбора AQL, который выполняется после предыдущей операции вставки (в отдельном запросе или операции)? – stj

+0

@ k.djonua: Вам все еще нужна помощь в решении этой проблемы? – 13abylon

+0

@ 13abylon, нет, спасибо. Я решаю эту проблему другим методом. – jonua

ответ

2

К сожалению, на данный момент (2.3) невозможно получить последние вставленные _key с запросом AQL.

Однако вы можете использовать db.<collection>.save({ Hello : "World" }): для получения последнего _key

+0

Для уточнения: дБ. .save возвращает документ с атрибутом '_key'. – moonglum

+0

С 2.4 теперь можно. Поэтому, если вы используете хотя бы ArangoDB 2.4, игнорируйте мой ответ и смотрите на ответ stj – 13abylon

9

Обновления по этому вопросу: С ArangoDB 2.4 можно извлечь только что вставленный документ (или документы), даже при запросе AQL.

В предыдущих версиях ArangoDB 2,3, синтаксис для одного документа Вставки:

INSERT { value: 1 } IN collection 

без возможности извлечения системных атрибутов (_key, _rev и т.д.) для только вставленного документа. Так как 2,4, то возможно следующее тоже:

INSERT { value: 1 } IN collection LET result = NEW RETURN result 

Вышеуказанные возвращает созданный документ, в том числе указанных атрибутов (value в описанном выше случае) и системные атрибуты.

Он также работает для многодокументных вставок, например. следующий запрос

FOR i IN 1..10 
    INSERT { value: i } IN collection 

может быть превращен в

FOR i IN 1..10 
    INSERT { value: i } IN collection LET result = NEW RETURN result 

вернуть все вставленные документы.

Смежные вопросы