2015-01-13 3 views
2

AQL에서 영향을받는 문서 수를 얻으려면 어떻게해야합니까?AQL에서 영향을받은 행 수/문서 수 얻기

FOR u IN users 
    FILTER u.active == true 
    UPDATE u WITH { numberOfLogins: 0 } IN users 

가 어떻게 영향을받는 문서의 수를 얻을 수 있습니다 :

이 같은 쿼리를 감안할 때?

답변

2

쿼리 자체는 모든 문서를 반환하지 않지만 업데이트 된 문서 수를 제공 할 수 있습니다.

var query = "FOR u IN users FILTER u.active == true UPDATE u WITH { numberOfLogins: 0 } IN users"; 
var stmt = db._createStatement(query); 
var result = stmt.execute(); 
var stats = result.getExtra().stats; 
print(stats); 

를 다음과 같이 뭔가를 돌려 내 경우 :

{ 
    "writesExecuted" : 50, 
    "writesIgnored" : 0, 
    "scannedFull" : 100, 
    "scannedIndex" : 0 
} 

writesExecuted은 아마 당신이 후에있는 인물이다 다음은 ArangoShell에서 작업을 수행하는 방법을 보여줍니다. 그것은 얼마나 많은 문서 업데이트가 수행되었는지 나타냅니다. 언어 별 드라이버에서 그림을 얻는 방법은 다를 수 있지만 (언어 및 드라이버에 따라 다름) ArangoDB의 모든 드라이버에서 사용하는 HTTP API는이 수치를 제공합니다.

+0

그러나 AQL에서이를 직접 수행 할 방법이 없습니까? 그래서 mysql의 ROW_COUNT()에 가능한 펜던트가 없습니까? –

+0

AQL에는 직접 연결되지 않습니다. AQL 쿼리는 어쨌든 단일 명령문이며, UPDATE는 항상 쿼리의 끝 부분에 있으므로 업데이트 된 행 수는 동일한 쿼리의 다른 연산으로 전달 될 수 없습니다. – stj

+1

2.4 이후 수정 된 문서는 선택적으로 AQL'UPDATE' 쿼리에서 반환 될 수 있습니다. 도움이되는지 확신 할 수는 없지만 선택 사항입니다. – stj

관련 문제