Использование подстановок трубопроводов с Java асинхронной Driver

голоса
0

Привязав, чтобы получить справочную работу с драйвером асинхронной Java, чтобы присоединиться к 2 коллекции. Но я не могу понять правильный синтаксис для использования, как я не могу найти какую-либо документацию о том, что синтаксис использует версию Пусть (переменные) команды $ перекодировки для правильной работы.

Вот что с помощью (и он не находит никаких совпадений):

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

В основном $_idв info_collectionравно object_idиз values_collection.

Нужно ли мне создать переменную по-разному или матч на равных? Если я использую внешний ключ версию метода поиска он работает, но мне нужно использовать трубопроводы, как у меня есть другие вещи, чтобы добавить к нему.

Есть примеры, использующие драйвер синхронизации, но не с драйвером асинхронным.

Задан 13/01/2020 в 23:55
источник пользователем
На других языках...                            


1 ответов

голоса
0

Разобрался ответ, я думаю, с агрегатами вы не можете использовать короткие вспомогательные функции рук, но должны пройти в параметрах, как документы.

Это включает в себя дополнительный параметр, равный тому, почему я не мог использовать другую функцию поиска.

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))));
Ответил 14/01/2020 в 20:37
источник пользователем

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