El uso de tuberías de consulta con Java asíncrono Conductor

votos
0

Atar a conseguir un trabajo de búsqueda con el conductor asíncrono java para unirse a 2 colecciones. Pero no puedo averiguar la sintaxis correcta de utilizar ya que no puedo encontrar ninguna documentación sobre lo que la sintaxis está utilizando la versión de Let (variables) de la orden de búsqueda $ está trabajando correctamente.

Esto es lo que el uso (y no encuentra ninguna coincidencia):

final List<Bson> lookUppipeline = new ArrayList<>();
final List<Variable<?>> variables = Arrays.asList(new Variable<>(id, $_id));
lookUppipeline.add(match(eq(object_id, $$id)));
final Bson lookup = lookup(values_collection, variables, lookUppipeline, tag_values);
final AggregateIterable<ApiJsonObject> findIter = info_collection.aggregate(Arrays.asList(lookup, skip(0), limit(1_000), project(exclude(EXCLUDES_LIST))));

Básicamente, el $_iden el info_collectiones igual a la object_idde la values_collection.

Qué necesito para crear la variable de manera diferente o el partido es igual? Si utilizo la versión de clave externa del método de búsqueda que funciona, pero necesito utilizar tuberías ya que tengo otras cosas que añadir a la misma.

Hay ejemplos que utilizan el controlador de sincronización, pero no con el conductor asíncrono.

Publicado el 13/01/2020 a las 21:55
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Averiguado la respuesta, supongo que con los agregados que no puede utilizar las funciones de ayuda de la mano cortos, pero debe pasar parámetros como los documentos.

Esto incluye el parámetro igual extra por qué no podía usar la otra función de búsqueda.

final List<Variable<?>> variables = Arrays.asList(new Variable<>("key", "$_id"));
final List<Bson> pipeline = Arrays.asList(match(expr(new Document("$and",
    Arrays.asList(new Document("$eq", Arrays.asList("$object_id", "$$key")),
                  new Document("$eq", Arrays.asList("$tag", tagId)),
                  new Document("$eq", Arrays.asList("$value", value)))))),
    project(fields(include("tag_values", "_id"))));
final Bson lookup = lookup("values_collection", variables, pipeline, "tag_values");
final AggregateIterable<ApiJsonObject> findIter = info_collection.aggregate(Arrays.asList(lookup, unwind("$tag_values"), skip(0), limit(1_000), project(exclude(EXCLUDES_LIST))));
Respondida el 14/01/2020 a las 18:37
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more