У меня полнофункциональное приложение для чтения / записи с весенней загрузкой из mongodb. Попытка реализовать поиск сейчас, однако приведенный ниже код не может найти коллекцию "project_following" и просто возвращает результат из коллекции "project". Когда я меняю имена коллекций, результаты инвертируются, указывая, что агрегация сама по себе работает, но не может найти коллекцию, упомянутую в "LookupOperation.newLookup () .from (" project_following "))"
Он успешно возвращает объект ProjectJoinSample.class, но данные из коллекции project_following не возвращаются.
Коллекция:
project_following
{
"_id" : "96e6c39c-be1f-4d22-9f05-957cb8d92c6b",
"count" : 1,
"userNames" : [
"DE10210"
]
}
Проект
{
"_id" : "96e6c39c-be1f-4d22-9f05-957cb8d92c6b",
"userName" : "AB10210",
"name" : "Super Fun Time Beer",
"description" : "Beer for fun"
}
Config:
@Value("${com.mongodb.collection.project:project}")
private String projectCollectionName;
@Bean
public String projectCollectionName() {
return this.projectCollectionName;
}
@Value("${com.mongodb.collection.project.following:project_following}")
private String projectFollowingCollectionName;
@Bean
public String projectFollowingCollectionName() {
return this.projectFollowingCollectionName;
}
application.properties:
com.mongodb.collection.project=project
com.mongodb.collection.project.following=project_following
Код:
LookupOperation lookupOperation = LookupOperation.newLookup()
.from("project_following"))
.localField("_id")
.foreignField("_id")
.as("project_join");
Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(Criteria.where("_id").is("96e6c39c-be1f-4d22-9f05-957cb8d92c6b")) , lookupOperation);
List<ProjectJoinSample> results = mongoTemplate.aggregate(aggregation, Project.class, ProjectJoinSample.class).getMappedResults();
Ожидаемый результат:
{
"_id" : "96e6c39c-be1f-4d22-9f05-957cb8d92c6b",
"userName" : "AB10210",
"name" : "Super Fun Time Beer",
"description" : "Beer for fun!",
"project_join" : [
{
"_id" : "96e6c39c-be1f-4d22-9f05-957cb8d92c6b",
"count" : 1,
"userNames" : ["DE10210"]
}
]
}
Фактический результат:
{
"_id" : "96e6c39c-be1f-4d22-9f05-957cb8d92c6b",
"userName" : "AB10210",
"name" : "Super Fun Time Beer",
"description" : "Beer for fun!"
}