Recupera resultados de consultas

Después de construir una consulta, se pueden especificar opciones de recuperación para tener más control sobre los resultados que se muestran. Accede a consultas de almacén de datos para obtener más información acerca de cómo estructurar consultas en tu app.

Recupera una sola entidad

Para recuperar una entidad única que coincida con tu consulta, usa el método PreparedQuery.asSingleEntity():

Java 8

Query q =
    new Query("Person")
        .setFilter(new FilterPredicate("lastName", FilterOperator.EQUAL, targetLastName));

PreparedQuery pq = datastore.prepare(q);
Entity result = pq.asSingleEntity();

Java 7

Query q =
    new Query("Person")
        .setFilter(new FilterPredicate("lastName", FilterOperator.EQUAL, targetLastName));

PreparedQuery pq = datastore.prepare(q);
Entity result = pq.asSingleEntity();

Esto muestra el primer resultado que se encontró en el índice que coincide con la consulta. (Si hay más de un resultado que coincide, entonces muestra TooManyResultsException.)

Itera a través de los resultados de la consulta

Cuando iteras a través de los resultados de una consulta con los métodos PreparedQuery.asIterable() y PreparedQuery.asIterator(), Cloud Datastore recupera los resultados por lotes. De forma predeterminada, cada lote contiene 20 resultados, pero puedes cambiar este valor con FetchOptions.chunkSize(). Puedes seguir iterando a través de los resultados de la consulta hasta que se muestren todos o hasta que se agote el tiempo de espera de la solicitud.

Recupera propiedades seleccionadas de una entidad

Para recuperar solo las propiedades seleccionadas de una entidad, en lugar de la entidad completa, usa una consulta de proyección. Este tipo de consulta se ejecuta más rápido y cuesta menos que las que muestran entidades completas.

Del mismo modo, una consulta de solo claves ahorra tiempo y recursos, pues solo muestra las claves de las entidades con las que coincide, en lugar de las entidades completas en sí. Para crear este tipo de consulta, usa el método Query.setKeysOnly():

Establece un límite para tu consulta

Puedes especificar un límite para tu consulta a fin de controlar el número máximo de resultados que se muestran en un lote. En el siguiente ejemplo, se recuperan las cinco personas más altas de Cloud Datastore:

Java 8

private List<Entity> getTallestPeople() {
  DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

  Query q = new Query("Person").addSort("height", SortDirection.DESCENDING);

  PreparedQuery pq = datastore.prepare(q);
  return pq.asList(FetchOptions.Builder.withLimit(5));
}

Java 7

private List<Entity> getTallestPeople() {
  DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

  Query q = new Query("Person").addSort("height", SortDirection.DESCENDING);

  PreparedQuery pq = datastore.prepare(q);
  return pq.asList(FetchOptions.Builder.withLimit(5));
}

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Java