2017-03-29 3 views
0

Google 드라이브를 GoogleDriva Android API와 함께 사용하려는 경우 Google forst는 조건을 충족하는 모든 파일을 검색하기 위해 검색어를 만듭니다. 여러 파일은 이름이 고유 식별자가 아닌 동일한 이름을 가질 수 있습니다. DriveId가 있습니다. 그러나 때로는 최신 파일에만 관심이 있습니다. Google 웹 사이트의 일반적인 방법은 이와 같습니다.Google 드라이브에서 첫 번째 검색 결과 만 반환하는 방법은 무엇인가요?

void retrieveFiles() { 
    SortOrder sortOrder = new SortOrder.Builder() 
     .addSortDescending(SortableField.MODIFIED_DATE) 
     .build(); 
    Query query = new Query.Builder() 
     .addFilter(Filters.eq(SearchableField.TITLE, filename), "my_filename.txt")) 
     .setSortOrder(sortOrder) 
     .build(); 
    MetadataBufferResult mbr = Drive.DriveApi.query(query).await().getMetadataBuffer(); 

    // Now we can iterate through all the result hits 
    Metadata metadata; 
    Iterator<Metadata> iterator = mbr.getMetadataBuffer().iterator(); 
    metadata = iterator.next(); // get the first hit 
}); 

이 쿼리는 조건을 충족하는 모든 파일에 대한 메타 데이터를 반환합니다. 그러나 이것이 우리가 관심을 가지고 있기 때문에 검색을 첫 번째 파일 (또는 그 중 임의의 수)로만 제한하는 것이 유용 할 것입니다. 정렬을하면 결과를 정리할 수 있습니다. 결과 집합을로 제한 할 수있는 방법이 있습니까? Somethinh는 SQL에서 TOP N ROWS를 좋아합니다. 당신은 행의 수를 제한하는 pageSize가 설정할 수 있습니다

답변

1

은에 의해 그룹을 할 수있는 방법 또는 SQL에서와 같은 구별은 없습니다 1.

로 돌아왔다. 같은 이름의 파일이 있다면 모두 가져와야합니다. 내가 생각할 수있는

있는 유일한 방법은 해 orderBy

orderBy 문자열
정렬 키의 쉼표로 구분 된 목록을 추가하는 것입니다. 유효한 키는 'createdTime', 'folders', 'modifiedByMeTime', 'modifiedTime', 'name', 'quotaBytesUsed', '최근 읽음', 'sharedWithMeTime', '별표'및 'viewedByMeTime'입니다. 각 키는 기본적으로 오름차순으로 정렬되지만 'desc'한정자로 반전 된 일 수 있습니다. 사용 예 : ? orderBy = folder, modifiedTime desc, name. 요청한 정렬 순서가 무시되는 에 약 1 백만 개의 파일이있는 사용자의 경우 현재 제한이 입니다.

그런 다음 이미 '수정 된 시간'으로 정렬하십시오. 그런 다음 로컬로 복제본을 처리 할 수 ​​있습니다.