Попытка получить поиск, работающий с драйвером asyn c java, чтобы объединить 2 коллекции. Но я не могу определить правильный синтаксис для использования, так как я не могу найти документацию о том, что синтаксис использует версию Let (variable) команды $ lookup для правильной работы.
Вот что использует (и не находит совпадений):
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
.
Нужно ли создавать переменную по-другому или совпадение равно? Если я использую версию метода поиска с внешним ключом, он работает, но мне нужно использовать конвейеры, так как у меня есть другие вещи, которые нужно добавить к нему.
Есть примеры использования драйвера syn c, но не с asyn c driver.
Синтаксис запроса mongodb:
db.info_collection.aggregate([
{
$lookup:{
from: "values_collection",
let: { id: "$_id" },
pipeline: [
{ $match:
{ $expr:
{ $and:
[
{ $eq: [ "$object_id", "$$id" ] }
]
}
}
}
],
as: "tag_values"
}
}
])
Вот некоторые примеры данных (обрезанные, но все соответствующие):
info_collection
:
[
{"_id":"cce9ec95-dd03-4066-89c5-86227be70503", "Name":"Object1" }
{"_id":"cce9ec95-dd03-4066-89c5-86227be70503", "Name":"Object2" }
{"_id":"cce9ec95-dd03-4066-89c5-86227be70503", "Name":"Object3" }
{"_id":"cce9ec95-dd03-4066-89c5-86227be70503", "Name":"Object4" }
{"_id":"cce9ec95-dd03-4066-89c5-86227be70503", "Name":"Object5" }
]
values_collection
:
[
{"object":"cce9ec95-dd03-4066-89c5-86227be70503", "_id":{"$oid":"5e1cee26610b668017537cc2"}, "Value":"test1", "Tag":1},
{"object":"6494bcec-c94f-4421-9f5a-84a76edda8fd", "_id":{"$oid":"5e1cee26610b668017537cc4"}, "Value":"test2", "Tag":1},
{"object":"ea40aaf7-1d7c-4bf2-8a98-93cfbf62035d", "_id":{"$oid":"5e1cee26610b668017537cc6"}, "Value":"test3", "Tag":1},
{"object":"7556a86d-4962-4220-8a77-10655e8e4376", "_id":{"$oid":"5e1cee26610b668017537cc8"}, "Value":"test4", "Tag":1},
{"object":"f78d4302-0756-47bb-aaff-c93744d147fe", "_id":{"$oid":"5e1cee26610b668017537cca"}, "Value":"test5", "Tag":1},
{"object":"06ade084-3e2a-42eb-9063-5059c447e518", "_id":{"$oid":"5e1cee26610b668017537ccc"}, "Value":"test6", "Tag":1}
]