反应式 mongo 模板:mongo 4.4.0 上的“''cursor' 选项是必需的”

Posted

技术标签:

【中文标题】反应式 mongo 模板:mongo 4.4.0 上的“\'\'cursor\' 选项是必需的”【英文标题】:Reactive mongo template: "'The 'cursor' option is required" on mongo 4.4.0反应式 mongo 模板:mongo 4.4.0 上的“''cursor' 选项是必需的” 【发布时间】:2022-01-09 22:53:58 【问题描述】:

正如标题所示,我收到错误消息,我应该使用以下代码使用光标选项:

    public Mono<Test> someMethod(String param) 
        return reactiveMongoTemplate.aggregate(Aggregation.newAggregation(X.class,
                        Aggregation.match(Criteria.where("test").is(param)),
                        Aggregation.group("field")
                                .first("value").as("value")
                                .first("test").as("test"),
                        Aggregation.group()
                                .first("test").as("test")
                                .push(new BasicDBObject()
                                        .append("k", "$_id")
                                        .append("v", "$value")
                                )
                                .as("array"),
                        Aggregation.replaceRoot(
                                MergeObjects.merge(
                                        new BasicDBObject().append("_id", "$test"),
                                        ArrayToObject.arrayValueOfToObject("array")
                                )
                        ),
                        Aggregation.project(getFields()),
                        Aggregation.merge()
                                .into(MergeOperationTarget.collection("test"))
                                .on("id")
                                .build()
                ).withOptions(AggregationOptions.builder().allowDiskUse(true).build()), Test.class)
                .single();
    

我们最近从 mongo 版本 3.5.5 升级到 4.4.0 以支持合并操作(自 4.2.0 起支持),现在我们收到此错误。请记住,这是响应式 mongo 模板,来自 org.springframework.data.mongodb.core(当前版本为 3.2.2)。

我确实尝试在聚合选项中添加 cursorBatchSizecursor 没有任何结果,或者我在那里做错了什么?我只是想知道它是否已经可用于响应式 mongo 模板。这也是来自 fladdoodle 库的嵌入式 mongo 实例。

完全错误:InvalidDataAccessApiUsageException "The 'cursor' option is required, except for aggregation explain", "code": 9, "codeName": "FailedToParse"

【问题讨论】:

【参考方案1】:

所以我们刚刚从嵌入式转到了 dockerized mongo 实例,这解决了很多问题,例如机器操作系统

【讨论】:

以上是关于反应式 mongo 模板:mongo 4.4.0 上的“''cursor' 选项是必需的”的主要内容,如果未能解决你的问题,请参考以下文章

docker下载mongo

您如何测试反应式 mongo 存储库?

以反应方式将嵌套记录插入到 mongo

@@ DataJpaTest无法排除反应性mongo的存储库

来自 mongo 模板的 Mongo 响应未正确映射到 java 对象

使用 Mongo 模板在 Spring Boot 中过滤内部 Arraylist 项的 Mongo 查询