Mit Lookup-Pipelines mit Java Async-Treiber

stimmen
0

Anknüpfend an eine Lookup-Arbeit mit dem Asynchron-Java-Treiber erhält 2 Sammlungen zu verbinden. Aber ich kann nicht die richtige Syntax zu verwenden, herauszufinden, wie ich keine Dokumentation finden, was die Syntax der LET (Variablen) Version des $ Lookup-Befehls verwendet wird, um richtig zu arbeiten.

Hier ist, was mit (und es keine Übereinstimmungen finden):

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

Grundsätzlich ist die $_idin die info_collectiongleich der object_idvon der values_collection.

Muss ich die Variable anders oder das Spiel gleich schaffen? Wenn ich den Fremdschlüssel Version der Lookup-Methode funktioniert es, aber ich brauche Pipelines zu verwenden, wie ich andere Dinge habe, um es hinzuzufügen.

Es gibt Beispiele, die die Sync-Treiber, aber nicht mit den Asynchron-Treiber verwenden.

Veröffentlicht am 13/01/2020 um 23:55
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Herausgefunden die Antwort, ich denke, mit Aggregaten Sie nicht die kurzen Handhilfsfunktionen verwenden können, aber in Parametern wie Dokumente übergeben müssen.

Dazu gehört auch die zusätzlichen Parameter gleich, warum ich nicht die andere Lookup-Funktion nutzen könnte.

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))));
Beantwortet am 14/01/2020 um 20:37
quelle vom benutzer

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