我正在使用spring-data-mongodb-1.2.0.RELEASE.我有两个类A和B,其中B有一个对A的引用,它用@DBRef注释.
A类:
@Document(collection = "a")
public class A {
@Id
public String id;
/** The TicketGrantingTicket this is associated with. */
@Field
public String name;
public A(String id, String name) {
this.id = id;
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
B级:
@Document(collection = "b")
public class B {
@Id
public String id;
@Field
public String name;
@DBRef
@Indexed
public A a;
public B(String id, String name, A a) {
super();
this.id = id;
this.name = name;
this.a = a;
}
} …Run Code Online (Sandbox Code Playgroud) 在后去年八月sbzoom提出了一个解决方案,使弹簧的数据MongoDB的多租户:
"你必须创建自己的RepositoryFactoryBean.这是Spring Data MongoDB参考文档中的示例.你仍然需要实现自己的MongoTemplate并延迟或删除ensureIndexes()调用.但是你必须重写几个类来确保调用你的MongoTemplate而不是Spring."
有没有人实现这个或类似的东西?
我正在使用Spring Data MongoDB,并希望像下面描述的那样执行批量更新:http://docs.mongodb.org/manual/reference/method/Bulk.find.update/#Bulk.find.update
使用常规驱动程序时,它看起来像这样:
以下示例初始化项集合的Bulk()操作构建器,并将各种多更新操作添加到操作列表中.
var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } );
bulk.find( { item: null } ).update( { $set: { item: "TBD" } } );
bulk.execute()
Run Code Online (Sandbox Code Playgroud)
有没有办法用Spring Data MongoDB实现类似的结果?
我想在spring应用程序中实现分页.我知道使用存储库我们可以实现分页但我们不能编写自己的数据检索查询存储库中有限的方法也没有接受查询类的方法.
如果我们想编写自定义查询以从mongodb检索数据,我们必须使用mongotemaplete,因为我知道使用mongotemplate我们无法实现分页.
有没有其他方法可以实现分页以及db查询.任何人都可以帮助我.
在我的Spring Boot Web应用程序中,我使用MongoDB来存储数据.在应用程序中,我使用扩展的接口访问数据库MongoRepository.
如何为此类存储库类设置单元测试?我想要的是
我尝试过使用Embedded MongoDB,但我无法弄清楚如何从文件中插入testdata.我也尝试使用NoSQLUnit,但SpringApplicationConfiguration与单元测试配置冲突,导致不同的数据库进行读写.
我有一个项目利用Spring Data(在这个例子中是MongoDB)与具有相同模式的多个数据库进行交互.这意味着每个数据库使用相同的实体和存储库类.所以,例如:
public class Thing {
private String id;
private String name;
private String type;
// etc...
}
public interface ThingRepository extends PagingAndSortingRepository<Thing, String> {
List<Thing> findByName(String name);
}
@Configuration
@EnableMongoRepositories(basePackageClasses = { ThingRepository.class })
public MongoConfig extends AbstractMongoConfiguration {
// Standard mongo config
}
Run Code Online (Sandbox Code Playgroud)
如果我连接到单个数据库,这可以正常工作,但是当我想同时连接到多个数据库时,事情会变得更复杂:
@Configuration
@EnableMongoRepositories(basePackageClasses = { ThingRepository.class },
mongoTemplateRef = "mongoTemplateOne")
public MongoConfigOne extends AbstractMongoConfiguration {
@Override
@Bean(name = "mongoTemplateOne")
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(this.mongo(), "db_one");
}
// Remaining standard mongo config …Run Code Online (Sandbox Code Playgroud) 试着ZonedDateTime用MongoDB.我可以保存ZonedDateTime,MongoDB但是当我查看记录时,它有太多不必要的东西:
> "timestamp" : {
> "dateTime" : ISODate("2016-12-13T13:45:53.991Z"),
> "offset" : {
> "_id" : "-05:00",
> "totalSeconds" : -18000
> },
> "zone" : {
> "_class" : "java.time.ZoneRegion",
> "_id" : "America/New_York",
> "rules" : {
> "standardTransitions" : [
> NumberLong(-2717650800)
> ],
> "standardOffsets" : [
> {
> "_id" : "-04:56:02",
> "totalSeconds" : -17762
> },
> {
> "_id" : "-05:00",
> "totalSeconds" : …Run Code Online (Sandbox Code Playgroud) 我想使用带有JSON Schema验证器选项的Spring-boot定义Mongo中的Collection(https://docs.mongodb.com/manual/core/schema-validation/#json-schema),我不想要JSR -303 Bean验证(这不是一个有效的答案Spring数据mongoDb不是像Spring数据Jpa那样的空注释),但是在创建Collection时,定义了一个使用CollectionInfos()在JSON中显示的选项.
例如,如果我定义一个Account模型类,则喜欢:
public class Account {
@Id
private String id;
private String name;
private String surname;
@NotNull
private String username;
}
Run Code Online (Sandbox Code Playgroud)
我希望该集合使用db.getCollectionInfos(),json喜欢:
[
{
"name" : "account",
"type" : "collection",
"options" : {
"validator" : {
"$jsonSchema" : {
"bsonType" : "object",
"required" : [
"username"
]
}
}
},
"info" : {
"readOnly" : false,
"uuid" : UUID("979cdc4b-d6f3-4aef-bc89-3eee812773a5")
},
"idIndex" : { …Run Code Online (Sandbox Code Playgroud) 使用 Spring Data REST 和 Spring Data Mongo,我希望使域字段(在我的示例中username为域字段)在创建时可插入,但在更新时不可更新。换句话说,相当于 JPA @Column(insertable = true, updatable = false)。User
我尝试了几种方法但不起作用。在我的github项目中,域类和存储库放在/src/main/java/*/*/User.java和UserRepository.java中。测试放在/src/test/java/*/*UserTest.java 中。
保存到数据库时该字段不可插入。请参阅包readonlyproperty和transient_项目中的内容。
通过 POST 请求创建时,该字段不可插入,因为初始化对象时会忽略 JSON 属性。jsonpropertyreadonly请参阅项目中的包。
username如果PUT 或 PATCH 请求的 json 正文中包含不可更新的字段,并且username值发生更改,username则会更新,这是意外的。jsoncreator请参阅项目中的包。
同3。参见nosetter项目中的package。
spring.jackson.deserialization.fail-on-ignored-properties=false
spring.jackson.deserialization.fail-on-unknown-properties=false
spring.jackson.mapper.infer-property-mutators=false
Run Code Online (Sandbox Code Playgroud)
没有帮助
ObjectMapper.readerFor(Class)来启动一个新对象ObjectMapper.readerForUpdating(objectToUpdate).readValue(json) …我的代码需要支持客户端发送的任何查询.客户端将以json的形式发送查询.我使用java mongo驱动程序低级api使用以下代码完成此操作,BasicDBObject queryObject = (BasicDBObject) JSON.parse(whereJson.toString());
因为我是spring数据mongodb中的新手,我无法在Query或Criteria类中找到类似的解决方案.我检查了不同的教程,但找不到任何教程.有可能在spring数据mongodb中做或者我应该使用低级apis本身吗?