Utiliser les pipelines de consultation avec Java Async pilote

voix
0

Tying pour obtenir un travail de recherche avec le pilote java async à se joindre à 2 collections. Mais je ne peux pas comprendre la syntaxe correcte à utiliser que je ne peux trouver aucune documentation sur ce que la syntaxe utilise la version de la commande de recherche de $ Soit (variables) est de fonctionner correctement.

Voici ce que l'utilisation (et il ne trouve pas de correspondances):

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

Fondamentalement , le $_iden info_collectionest égal au object_iddu values_collection.

Ai-je besoin de créer la variable différemment ou le match est égal? Si j'utilise la version clé étrangère de la méthode de recherche cela fonctionne, mais je dois utiliser les pipelines que j'ai d'autres choses à ajouter.

Il y a des exemples en utilisant le pilote de synchronisation, mais pas avec le pilote async.

Créé 13/01/2020 à 23:55
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Façonnés la réponse, je suppose que les agrégats vous ne pouvez pas utiliser les fonctions d'aide à la main courte mais qui doivent passer dans les paramètres en tant que documents.

Cela inclut le paramètre égal supplémentaire pour cela que je ne pouvais pas utiliser l'autre fonction de recherche.

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))));
Créé 14/01/2020 à 20:37
source utilisateur

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