问题标签 [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.
spring-data - 我将如何在 Spring Data 中使用 MongoRepository 执行 $push?
我有一个这样的MongoDB结构:
我正在使用 Spring Data MongoDB 包来访问这些数据。将主要写入数据,所以我想使用本机“$push”功能将“事件”添加到“记录”,但我似乎无法弄清楚如何在不获取的情况下使用 MongoRepository整个记录,然后将其推送并保存回来?
在使用 MongoRepository 时,您永远不会真正拥有具体的实现。Spring 根据注解或方法本身的名称处理所有事情
更新
正确的方法是在存储库上实现自定义方法,然后使用 MongoTemplate 手动完成吗?
例子:
FooRepository.java
FooRepositoryCustom.java
FooRepositoryImpl.java
mongodb - Mongodb - 如何通过spring应用添加数据库用户
我想在 mongodb 中实现数据库身份验证。
为了做到这一点,我发现我需要首先创建一个管理员用户,然后通过 mongodb 客户端 shell(手动或使用 javascript 文件)为我的每个数据库创建单独的用户。
我想知道是否可以从 spring 应用程序本身将用户添加到单个数据库,但没有得到任何有用的指针来执行此操作。是不是这种方法是错误的,因为如果可能的话,应用程序将始终能够访问数据库,因为它本身正在创建用户,但外部访问仍然会被阻止。
请让我知道如何实现这一点,或者它是否是不正确的方法。
spring - Spring-data MongoDB 存储库和继承
我创建了一个这样的类用户类:
ICredentials 接口:
一种实现:
现在,我创建了一个存储库来从凭据中查找用户:
Spring记录了这个(对于两个请求):org.springframework.data.mongodb.core.MongoTemplate [DEBUG] find using query: { "credentials" : { "login" : "test" , "password" : "test"}}
fields: null for class: class xxx.User in collection: user
而且什么都没找到……好像什么都没找到,因为“_class”属性没有写就是请求。我认为好的要求应该是:
{ "credentials" : {
"_class":"xxx.LoginPassword"
, "login" : "test" , "password" : "test"}}
我做错了什么吗?我错过了什么吗?
谢谢
我使用 spring mvc 3.2.0、spring-data-commons-core 1.4.0、spring-data-mongodb 1.1.1 和 mongo-java-driver 2.10.1(我已将所有库更新到最新版本以确保它不是已经修复的错误但没有成功)
java - MongoTemplate 标准查询翻译似乎不正确
我正在查询具有嵌套对象的集合。域模型如下所示:
我正在使用如下所示的条件进行查询:
我使用创建的
我可以看到条件对象不包含其他内容,因为我可以像这样打印出来:
如果我打开包 org.springframework.data.mongodb.core 的调试日志记录,我可以看到实际发送到服务器的查询是:
编辑:我的文档包含一个名为“字段”的字段,似乎我的代码或 mongoTemplate / spring-data 中的某些内容实际上正在搜索字段:null。MongoTemplate 的日志行让我感到困惑,因为 fields: null 实际上是指要返回的一组字段名称。
那么,如何在没有 spring-data 的情况下搜索与该 uuid 匹配的文档,只返回属性“fields”为空的文档?
同时,仍在研究如何解决这个问题,因为我无法更改文档结构......
mongodb - 防止 Mongo 的 Spring Data 将 id 转换为 ObjectId
我在现有数据库上使用 Spring Data for Mongo。之前的应用程序使用纯字符串作为 id 而不是 ObjectId。
我的问题是 Spring Data 坚持将字符串转换为 ObjectId,这使得所有按 id 的查询都失败了。
例如,当我这样做时repository.findOne('')
,执行的查询{ "_id" : { "$oid" : "50cf9f34458cf91108ceb2b4"}}
应该是{ "_id" : "50cf9f34458cf91108ceb2b4" }
有没有办法避免 Spring Data 将字符串 id 转换为 ObjectId?
谢谢!
迭戈
mongodb - 如何使用 @Query 注释在 mongodb 中查找所有文档(在集合中)
@Query
注释可以为特定方法指定 MongoDB 查询。一个例子可能是@Query("{ 'firstname' : ?0 }")
。但是,@Query
如果我只想查找所有文档而不指定“where”子句,那么参数应该是什么?下面的代码说明了我想要实现的目标,但问题可能很简单:获取所有文档的 JSON/BSON 查询是什么?
spring - 如何从 spring-data mongodb 扩展 SimpleMongoRepository?
我正在尝试创建一个可以由所有 DAO 扩展的 BaseDAO 接口。该项目使用带有 mongodb 的 spring-data。问题是,如果我让所有单独的 DAO 扩展 MongoRepository 并且不编写实现类,那么一切正常。但是,如果我尝试使用泛型将 MongoRepository 添加到 BaseDAO 接口,该应用程序将不再工作,因为实例化 SimpleMongoRepository 所需的参数为空。这是我到目前为止的代码:
BaseDAO.java
BaseDAOImpl.java
用户DAO.java
UserDAOImpl.java
应用程序上下文.xml
应用程序.java
所以当我运行它时,我在 BaseDAOImpl 中得到一个 NPE,因为 mongoTemplate 和 entityInformationCreator 都是空的。我如何加载它们?我还查看了 Spring MongoDB 参考文档,但它主要说要遵循其他类型存储库的文档。我在网上和其他地方唯一能找到的就是创建一个工厂 bean。所以我也尝试过:
MongoRepoFactoryBean.java
并将 applicationContext.xml 更改为:
但这也行不通。我也尝试过使用 JavaConfig,但是在使用注释进行配置时,我不知道如何设置工厂类。我究竟做错了什么?SimpleMongoRepository 没有默认构造函数。注入静态字段有问题吗?
java - spring-data-mongodb 在为对象补水时究竟是如何处理构造函数的?
我已阅读http://static.springsource.org/spring-data/data-mongo/docs/1.1.0.RELEASE/reference/html/#mapping-chapter但找不到以下基本 spring-data- 的答案mongodb对象映射问题:
如果我从 MongoDB 加载以下类的实例:
我知道将使用 MongoDB 文档Test(String str1)
顶级字段中的值调用构造函数。str1
我假设这个构造函数等同于@PersistenceConstructor
显式声明。
但是str2, date3
在这种情况下,这些字段会发生什么?不属于构造函数的所有字段是否仍会被初始化,还是会str2, date3
因为找到仅使用的 PeristenceConstructor 而丢失str1
?
最后,这将以什么顺序发生?将由date3
构造函数设置,然后被先前持久化的字段覆盖,反之亦然?
java - 复杂的 Mongo DB 查询 - 子文档
我的文档结构如图所示
我想获得一个版本大于 0 的 moduleDataItems 集合。
这是我的尝试:
我很确定我没有做正确的事。我在结果中没有得到任何 DataItem。
这些类代表 json 结构。
任何帮助表示赞赏。
谢谢
spring - 子文档中的 SD MongoDB 多态性
我刚开始使用 spring-data-mongodb 用 Java 开发一些应用程序,遇到了一些我无法解决的问题:
有几个像这样的文档 bean:
我有一个存储库类,它的方法简单地调用类似于这样的查找:
保存 Bar 效果很好,它会将它与 Foo 和 Bar 的“_class”属性一起保存在 mongo 中。但是,通过 Foo 中的某些属性查找会引发如下异常:
经过一番挖掘,这是有道理的,因为查询中没有指定子文档的具体类型,并且 Bar 的实体信息说 foo 的类型是 Foo(不是 FooImpl),而后者又不能具有属性因为它是一个接口。
我的问题是:有没有办法在不将子文档类型声明为具体类型的情况下指定它或解决这个问题?
我已经在谷歌上搜索了几天,查看了文档和 API 以及源代码,但我找不到明确的方法。我真的很感谢你的帮助。
非常感谢你。