问题标签 [spring-data-mongodb]

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 投票
12 回答
29217 浏览

mongodb - Spring数据MongoDb:MappingMongoConverter删除_class

默认MappingMongoConverter为数据库中的每个对象添加一个自定义类型键(“_class”)。所以,如果我创建一个人:

并将其保存到数据库:

mongo 中的结果对象将是:

问题:

  1. 将 Person 类移动到不同的命名空间有什么影响?

  2. 是否可以不使用“_class”键污染对象;不为 Person 类编写唯一的转换器?

0 投票
2 回答
18753 浏览

java - 如何在 Spring Data MongoDB 存储库中查询日期?

我的域对象 -

我有一个 PersonRepository

我正在尝试获取在某个日期之后出生的所有人员。但这不起作用。我错过了什么?mongodb 控制台中“出生”的日期格式如下所示

我试图在 data-jpa 源中为此寻找单元/集成测试。找不到。有人可以指出我吗?

0 投票
5 回答
14539 浏览

mongodb - 使用 Spring Data Mongodb,是否可以在不拉取和迭代整个集合的情况下获得字段的最大值?

使用mongoTemplate.find(),我指定一个可以调用的查询.limit().sort()

.limit()返回一个Query对象
.sort()返回一个Sort对象

鉴于此,我可以说 Query().limit(int).sort(),但这不会执行所需的操作,它只是对有限的结果集进行排序。

我也不能调用 Query().sort().limit(int) 因为 .sort() 返回一个 Sort()

那么使用 Spring Data,我如何执行以下如 mongoDB shell 中所示的操作?也许有一种方法可以传递我还没有找到的原始查询?

如果需要,我可以扩展 Paging 界面......只是似乎没有任何帮助。谢谢!

0 投票
4 回答
1713 浏览

spring-data-mongodb - 来自 spring mongo 的 dropDatabase

我想在我的集成测试之前在我的 mongo 中删除数据库。是否可以通过 spring mongo 做到这一点?

如果它现在不可用,是否可以从 spring mongo 以某种方式获取 com.mongodb.DB 对象,所以我可以调用它的 dropDatabase() ?

0 投票
4 回答
30180 浏览

java - 如何使用 Spring 的 MongoTemplate 和 Query 类检索字段子集?

我希望能够执行以下控制台命令以返回仅填充了一部分字段但使用 SpringMongoTemplate类的所有行:

控制台命令

Mongo模板

有关投影(子集)查询的信息可以在 MongoDB 手册中找到。

0 投票
2 回答
16560 浏览

java - spring-data-mongo - 可选查询参数?

我将 spring-data mongo 与基于 JSON 的查询方法一起使用,并且不确定如何在搜索查询中允许可选参数。

例如 - 说我有以下功能

- 但我不想应用名称正则表达式匹配,或者如果将 NULL 值传递给方法,则不应用日期范围限制。

目前看来我可能必须使用 mongoTemplate 构建查询。

有没有其他选择 - 或者使用 mongoTemplate 是最好的选择?

谢谢

0 投票
6 回答
37666 浏览

java - spring-data-mongodb 在一个 Mongo 实例中连接多个数据库

我正在使用最新的 spring-data-mongodb (1.1.0.M2) 和最新的 Mongo Driver (2.9.0-RC1)。我有一种情况,我有多个客户端连接到我的应用程序,我想在同一个 Mongo 服务器中为每个客户端提供自己的“模式/数据库”。如果我直接使用驱动程序,这不是一项很难完成的任务:

看,轻松。但是 spring-data-mongodb 不允许使用多个数据库的简单方法。建立连接的首选方法Mongo是扩展AbstractMongoConfiguration类:

您将看到您覆盖了以下方法:

所以它迫使你使用一个数据库名称。然后您构建的存储库接口使用传递给类的 MongoTemplate 中的数据库名称SimpleMongoRepository

我到底会在哪里粘贴多个数据库名称?我必须创建多个数据库名称、多个MongoTempates(每个数据库名称一个)和多个其他配置类。这仍然没有让我的存储库接口使用正确的模板。如果有人尝试过这样的事情,请告诉我。如果我弄清楚了,我会在这里发布答案。

谢谢。

0 投票
2 回答
1362 浏览

java - Spring Data MongoDB 存储库查询连接如何工作?

当我创建一个 Spring Data 存储库的方法时,findByName(…)一切正常。但是当使用findByField1AndName(…)Spring Data 时,MongoDB 只为最后一个参数生成查询:

但我预计它会产生

有什么问题?请帮忙。

UPD1:如果有人遇到这样的问题,您可以使用@Query 注解手动构建您的查询,示例如下:

0 投票
1 回答
7590 浏览

spring - MongoDB Lifecycle 事件访问 MongoTemplate

我正在尝试使用 Spring Data Mongodb 为我的 mongodb 文档实现版本控制系统。我以为我会利用 Mongo 生命周期事件

Spring 中的 Mongo 生命周期事件

我想做的是收听onBeforeSave并获取文档的原始版本,并获取两者之间的差异。

我遇到的问题是我无法获得对 mongoOperations 的引用。它不断创建循环引用。我是否@Autowire:

自动线注入

蒙哥配置:

听众:

或使用Setter 注入

二传手注入

蒙哥配置:

听众:

在生命周期事件中处理文档版本控制对我来说很有意义。我用 PHP/Doctrine/Mongo 做了类似的事情

我是如何使用 Doctrine/PHP 做到的

在 Doctrine 的情况下,我在生命周期回调中获得了对 Document Manager 的引用。有什么线索我可以用 Spring Data 做同样的事情吗?

0 投票
2 回答
3107 浏览

java - Spring Data MongoDB Cross-Store 插件和 JPA PrePersist 和 PreUpdate

我们有一个具有以下设置的应用程序:

Java 6.0 Spring Data JPA 1.1.0.RELEASE Spring Data MongoDB 1.0.2.RELEASE Spring Data MongoDB Cross-Store 1.0.2.RELEASE Hibernate JPA 2.0

我们在这个应用程序中有几个使用 JPA PrePersist、PreUpdate、PostPersist 和 PostUpdate 注释的类。下面给出一个例子。

一旦我们为跨存储插件打开 AspectJ weaving,Spring 应用程序上下文就无法加载并出现错误:

我发现错误的根本原因是 Aspect MongoDocumentBacking 将额外的 PrePersist 和 PreUpdate 方法编织到实体类中。由于这些类已经有带有这些注释的方法,Hibernate Entity Manager 无法验证这些类。

是否有关于跨商店插件应如何与具有使用 JPA 注释的现有代码的应用程序一起使用的任何指导?