Utilização de gasodutos de pesquisa com Java assíncrono driver

votos
0

Amarrando para obter um trabalho de pesquisa com o motorista assíncrona java para se juntar 2 coleções. Mas eu não consigo descobrir a sintaxe correta para o uso como eu não consigo encontrar qualquer documentação sobre o que a sintaxe está usando a versão Let (variáveis) do comando $ lookup está a funcionar correctamente.

Aqui está o que usar (e não encontrar qualquer correspondência):

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))));

Basicamente, a $_idna info_collectioné igual ao object_iddo values_collection.

Preciso criar a variável de forma diferente ou o jogo é igual? Se eu usar a versão de chave estrangeira do método de pesquisa que funciona, mas eu preciso usar pipelines como eu tenho outras coisas para adicionar a ele.

Há exemplos utilizando o controlador de sincronização, mas não com o driver assíncrona.

Publicado 13/01/2020 em 23:55
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Descobri a resposta, eu acho que com agregados não é possível utilizar as funções auxiliares mão curta, mas deve passar em parâmetros como documentos.

Isso inclui o parâmetro extra igual para por que eu não poderia usar o outro função de pesquisa.

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))));
Respondeu 14/01/2020 em 20:37
fonte usuário

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