问题标签 [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.
java - 使用 Spring Boot WebFlux、Spring Data MongoDB Reactive 和 ReactiveMongoRepository 更新 1 个或多个特定字段 MongoDB
我是java的新手。我试图为我的 API 实现更新方法。我想更新我的数据的某些字段。这是我的数据类:
我的服务接口:
并为服务实施:
我的控制器:
和任务存储库:
我在数据库中的数据:
我的请求正文:
我期望:
但它回应:
它用空值更新我在请求中的缺失值。如何更新数据中的特定值?
spring-data-mongodb-reactive - 是否有某种方法可以对 spring-data-mongodb-reactive 中的每个文档(批量更新)执行不同的更新?
我在当前最新版本中使用 spring-boot-starter-data-mongodb-reactive 。我需要更新集合中许多文档中的计数字段,但每个文档的计数字段不同。我正在寻找一种执行批量更新的方法,这样我就不必为每个项目单独执行一百万次更新。
我的第一种方法是创建一个UpdateOneModel
包含Criteria
和 的列表Update
。我可以从ReactiveMongoOperations
实例中获取集合,但这感觉是一种非常尴尬的方式。它看起来像这样:
这感觉像是尝试执行批量更新的一种奇怪(几乎是蛮力)的方式。我错过了什么吗?Spring 通常包含执行批量更新的方法,但它们的响应式 mongo 库显然不包含它。我还能尝试什么?
mongodb - Spring Data Reactive Mongo Operator如何在聚合管道中执行查找阶段后对嵌套字段调用未设置操作
我正在合并来自两个集合projects
和card_types
聚合管道的记录,然后尝试cardFields
从结果中删除合并记录的字段。所以这个想法是从汇总结果来看
进入
我写的方法是
该方法因异常而失败
org.springframework.data.mongodb.UncategorizedMongoDbException: Command failed with error 40324 (Location40324): 'Unrecognized pipeline stage name: '$unset''
spring - “发现模棱两可的参数类型无效”?Spring 与 Project Reactor 的集成
我正在使用带有 Spring Integration 的 Project Reactor 从 Kafka 读取并写入 MongoDB,我的 Kafka 使用效果很好,但是.handle(MongoDb.reactiveOutboundChannelAdapter(mongoFactory))
卡住了。我已经看到这个函数的内部代码是new ReactiveMongoDbStoringMessageHandler(mongoFactory))
,所以我尝试了以下方法(我有一个transform()
从 转换为 的方法ConsumerRecord
,Mono<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:
然后是很长的函数列表。有什么理由会发生这种情况?
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:
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 而不是主机名。
- 监控线程通过主机名连接 --> 一切正常
- 随着监控线程的第一个状态请求,它们接收主机作为 IP
- Mongo 驱动程序使用 IP 地址更新监控集群的副本集并删除主机名
- 新的 IP 监控线程已启动并尝试 hello 命令
- 由于 IP 验证主机名,命令失败
似乎这适用于非反应性,因为 IP 被解析Inet4Address
并因此再次获得正确的主机名。
有人对此有解决方案吗?除了
- 添加 IP 作为证书的替代名称(IP 可能会更改)
- 允许无效的主机名(sslInvalidHostNameAllowed 选项)
是否我们在服务器端配置了一些东西,所以 mongo 返回主机名而不是 IP?
提前谢谢你。
java - 将一个 mongodb 字段映射到两个 POJO 属性
我在我的 mongodb 实体上有一个属性,可以调用它foo
。
当我检索此属性时,我希望在我的 POJO 的两个不同属性上设置它的值,foo
并且bar
因此,如果文件注册为:
当服务从数据库中检索它时,我希望获取的实体如下所示:
有没有办法只改变实体类来实现这一点?我尝试了以下但没有用
我正在使用 Spring Webflux 和 Reactive MongoDB 堆栈。