Я пытаюсь создать представление mongodb (не материализованное) для агрегирования данных из вложенного объекта.
Упрощение структура данных:
@Document(collection= "ObjectA")
class ObjectA {
String id;
String propA;
List<ObjectB> list;
}
class ObjectB {
String name;
}
Я создал представление с именем ObjectBView
и я сначала поместил одно поле в круговую линию. К сожалению, представление не содержит данных даже после вставки нового ObjectA
. Коллекция ObjectBView
существует в логах и мон go -коннекторах. После нажатия кнопки 'view' в GUI возвращается ошибка: Collection not found!
Вот мой код:
public void initMongoView() {
if (!mongoTemplate.collectionExists("ObjectBView")) {
MongoDatabase mongoDatabase = this.mongoClient.getDatabase(dbName);
mongoDatabase.createView("ObjectBView", "ObjectA", asList(buildViewProperties()));
log.info(mongoTemplate.getCollectionNames().toString()); // <- view exists!
}
}
private Document buildViewProperties() {
Document pipeline = new Document("$project",
new Document("propA", 1));
return pipeline;
}
В проекте используется mongo-java-driver-3.11.2
.
Почему представление не содержит данных?