Коллекция не создана с использованием драйвера MongoDB 3.8. - PullRequest
0 голосов
/ 15 января 2019

Я использую этот конвейер агрегации, который группирует мои документы, проецирует их перед тем, как поместить их в другую коллекцию, используя операцию $out.

collectionObservations.aggregate(Arrays.asList(
                new Document("$group",
                        new Document("_id",
                                new Document("producerId", "$producer.producerId")
                                        .append("name", "$producer.name")
                                        .append("fundings", "$producer.fundings")
                                        .append("datasetId", "$dataset.datasetId")
                                        .append("title", "$dataset.metadata.title")
                                        .append("portalSearchCriteria", "$dataset.metadata.portalSearchCriteria")
                                        .append("featureOfInterest", "$observation.featureOfInterest")
                                        .append("observedProperty", "$observation.observedProperty")
                        ).append("documentId",
                                new Document("$push", "$documentId"))),
                new Document("$project",
                        new Document("documentId", 1)
                                .append("producer.producerId", "$_id.producerId")
                                .append("producer.name", "$_id.name")
                                .append("producer.fundings", "$_id.fundings")
                                .append("dataset.datasetId", "$_id.datasetId")
                                .append("dataset.metadata.title", "$_id.title")
                                .append("dataset.metadata.portalSearchCriteria", "$_id.portalSearchCriteria")
                                .append("observation.featureOfInterest", "$_id.featureOfInterest")
                                .append("observation.observedProperty", "$_id.observedProperty")
                                .append("_id", 0)),
                out(outputCollectionName)
        )).allowDiskUse(Boolean.TRUE);

outputCollection не создается и не заполняется (если он был создан ранее), пока у меня не было .forEach(printBlock), чтобы напечатать результат агрегации, как объяснено в документе . Может кто-нибудь объяснить мне, что происходит и ожидается ли такое поведение?

...