我正在运行将文档进行分组的聚合管道,先对其进行投影,然后再使用$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)
打印the doc中说明的聚合结果为止。
任何人都可以向我解释发生了什么以及是否会发生这种情况?