Я использую RemoteAPI (Java) для прохождения большого массива данных ~ 90K и выполнения некоторой миграции данных.Datastore query with limit
int CHUNK_SIZE = 500;
int LIMIT = 900;
QueryResultList<Entity> result = ds.prepare(entityQuery)
.asQueryResultList(
FetchOptions.Builder
.withPrefetchSize(CHUNK_SIZE)
.limit(LIMIT)
.chunkSize(CHUNK_SIZE)
).startCursor(cursor);
С набором запросов LIMIT
к 900
result.size()
является весь набор данных, ~ 90К, а 900
. Если я попробую более низкий LIMIT
, скажем 300
, размер результата является ожидаемым (300
).
Что мне здесь не хватает? Из документации я не мог понять, почему она порождает поведение, которое я описываю здесь.
Я, может быть, говорю что-то глупое, но вы пытались изменить порядок своих вариантов? FetchOptions.Builder.withLimit (LIMIT) .withPrefetchSize (CHUNK_SIZE) .chunkSize (CHUNK_SIZE) ) .startCursor (курсор); – yannicksoldati
Исправьте меня, если я ошибаюсь, но я не вижу, чтобы метод '.limit' находился в сводке методов для объекта' FetchOptions.Builder' (см. Https://cloud.google.com/appengine/docs /java/javadoc/com/google/appengine/api/datastore/FetchOptions.Builder). Вместо этого должен быть '.withLimit'. –