Почему mongodb не обновляет представление? - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь создать представление 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.

Почему представление не содержит данных?

...