问题标签 [spring-data-mongodb-reactive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
248 浏览

java - 使用 Spring Boot WebFlux、Spring Data MongoDB Reactive 和 ReactiveMongoRepository 更新 1 个或多个特定字段 MongoDB

我是java的新手。我试图为我的 API 实现更新方法。我想更新我的数据的某些字段。这是我的数据类:

我的服务接口:

并为服务实施:

我的控制器:

和任务存储库:

我在数据库中的数据:

我的请求正文:

我期望:

但它回应:

它用空值更新我在请求中的缺失值。如何更新数据中的特定值?

0 投票
0 回答
9 浏览

spring-data-mongodb-reactive - 是否有某种方法可以对 spring-data-mongodb-reactive 中的每个文档(批量更新)执行不同的更新?

我在当前最新版本中使用 spring-boot-starter-data-mongodb-reactive 。我需要更新集合中许多文档中的计数字段,但每个文档的计数字段不同。我正在寻找一种执行批量更新的方法,这样我就不必为每个项目单独执行一百万次更新。

我的第一种方法是创建一个UpdateOneModel包含Criteria和 的列表Update。我可以从ReactiveMongoOperations实例中获取集合,但这感觉是一种非常尴尬的方式。它看起来像这样:

这感觉像是尝试执行批量更新的一种奇怪(几乎是蛮力)的方式。我错过了什么吗?Spring 通常包含执行批量更新的方法,但它们的响应式 mongo 库显然不包含它。我还能尝试什么?

0 投票
1 回答
22 浏览

mongodb - Spring Data Reactive Mongo Operator如何在聚合管道中执行查找阶段后对嵌套字段调用未设置操作

我正在合并来自两个集合projectscard_types聚合管道的记录,然后尝试cardFields从结果中删除合并记录的字段。所以这个想法是从汇总结果来看

进入

我写的方法是

该方法因异常而失败

org.springframework.data.mongodb.UncategorizedMongoDbException: Command failed with error 40324 (Location40324): 'Unrecognized pipeline stage name: '$unset''

0 投票
1 回答
32 浏览

spring - “发现模棱两可的参数类型无效”?Spring 与 Project Reactor 的集成

我正在使用带有 Spring Integration 的 Project Reactor 从 Kafka 读取并写入 MongoDB,我的 Kafka 使用效果很好,但是.handle(MongoDb.reactiveOutboundChannelAdapter(mongoFactory))卡住了。我已经看到这个函数的内部代码是new ReactiveMongoDbStoringMessageHandler(mongoFactory)),所以我尝试了以下方法(我有一个transform()从 转换为 的方法ConsumerRecordMono<String>带有@Transformer注释):

代码遵循文档https://docs.spring.io/spring-integration/reference/html/mongodb.html#mongodb-reactive-channel-adapters。我得到的错误是: java.lang.IllegalArgumentException: Found ambiguous parameter type [class java.lang.Void] for method match:然后是很长的函数列表。有什么理由会发生这种情况?

0 投票
1 回答
61 浏览

java - Use $function (javascript) in mongo repository @Aggregation pipeline

I have the below query that runs fine in mongo shell. I have to use this from my spring boot java application.

I have used ReactiveMongoRepository and @Aggregation annotation as below:

But it fails with below error. This error is coming from the java script function inside the query. How can I run this query from my Java Application?

Sample Document:

0 投票
1 回答
35 浏览

spring-data - 使用 Spring Data MongoDB Reactive 进行批量更新

如何使用 执行批量操作ReactiveMongoTemplate

基本上我想初始化批量使用db.<collection_name>.initializeUnorderedBulkOp()并使用<bulk>.execute().

我知道有一种方法可以使用这里MongoTemplate指定的简单方法来执行此操作,但我找不到任何方法可以在反应式中执行此操作。

0 投票
1 回答
18 浏览

java - Mongo Replicaset监控用IP替换主机名导致主机名验证失败

我们的 mongo java 驱动程序和监控线程有问题。

我们正在运行 3 个服务器副本集,并使用主机名连接我们的 Spring Boot 微服务。 mongodb://<username>:<password>@A:27017,B:27017,C:27017/?tls=true

到目前为止,我们一直使用非反应式 mongo 驱动程序,一切正常。但是我现在想使用响应式/netty 版本,我们得到了一个java.security.cert.CertificateException,因为它试图通过 IP 而不是主机名来验证替代名称。

我通过库进行了调试,并且能够看到当 Replicaset 线程的监控线程启动时,它们正在接收{hello: 1}IP 而不是主机名。

  1. 监控线程通过主机名连接 --> 一切正常
  2. 随着监控线程的第一个状态请求,它们接收主机作为 IP
  3. Mongo 驱动程序使用 IP 地址更新监控集群的副本集并删除主机名
  4. 新的 IP 监控线程已启动并尝试 hello 命令
  5. 由于 IP 验证主机名,命令失败

似乎这适用于非反应性,因为 IP 被解析Inet4Address并因此再次获得正确的主机名。

有人对此有解决方案吗?除了

  • 添加 IP 作为证书的替代名称(IP 可能会更改)
  • 允许无效的主机名(sslInvalidHostNameAllowed 选项)

是否我们在服务器端配置了一些东西,所以 mongo 返回主机名而不是 IP?

提前谢谢你。

0 投票
0 回答
35 浏览

java - 将一个 mongodb 字段映射到两个 POJO 属性

我在我的 mongodb 实体上有一个属性,可以调用它foo

当我检索此属性时,我希望在我的 POJO 的两个不同属性上设置它的值,foo并且bar

因此,如果文件注册为:

当服务从数据库中检索它时,我希望获取的实体如下所示:

有没有办法只改变实体类来实现这一点?我尝试了以下但没有用

我正在使用 Spring Webflux 和 Reactive MongoDB 堆栈。