标签: spring-data-mongodb

Spring Data - MongoDB索引DBRef

我正在使用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)

indexing mongodb dbref spring-data-mongodb

10
推荐指数
2
解决办法
8996
查看次数

制作spring-data-mongodb多租户

去年八月sbzoom提出了一个解决方案,使弹簧的数据MongoDB的多租户:

"你必须创建自己的RepositoryFactoryBean.这是Spring Data MongoDB参考文档中的示例.你仍然需要实现自己的MongoTemplate并延迟或删除ensureIndexes()调用.但是你必须重写几个类来确保调用你的MongoTemplate而不是Spring."

有没有人实现这个或类似的东西?

java spring mongodb spring-data spring-data-mongodb

10
推荐指数
1
解决办法
7480
查看次数

Spring Data MongoDB和批量更新

我正在使用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实现类似的结果?

java mongodb spring-data-mongodb

10
推荐指数
2
解决办法
1万
查看次数

具有可分页的Spring自定义查询

我想在spring应用程序中实现分页.我知道使用存储库我们可以实现分页但我们不能编写自己的数据检索查询存储库中有限的方法也没有接受查询类的方法.

如果我们想编写自定义查询以从mongodb检索数据,我们必须使用mongotemaplete,因为我知道使用mongotemplate我们无法实现分页.

有没有其他方法可以实现分页以及db查询.任何人都可以帮助我.

spring mongodb spring-data spring-data-mongodb spring-boot

10
推荐指数
4
解决办法
2万
查看次数

如何对Spring Boot MongoRepository进行单元测试?

在我的Spring Boot Web应用程序中,我使用MongoDB来存储数据.在应用程序中,我使用扩展的接口访问数据库MongoRepository.

如何为此类存储库类设置单元测试?我想要的是

  • 启动MongoDB的嵌入式/内存实例
  • 从JSON或XML插入testdata
  • 使用自动装配的存储库对testdata执行查询

我尝试过使用Embedded MongoDB,但我无法弄清楚如何从文件中插入testdata.我也尝试使用NoSQLUnit,但SpringApplicationConfiguration与单元测试配置冲突,导致不同的数据库进行读写.

mongodb spring-data-mongodb spring-boot

10
推荐指数
3
解决办法
6358
查看次数

自定义Spring Data存储库bean名称以用于多个数据源

我有一个项目利用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)

java spring mongodb spring-data spring-data-mongodb

10
推荐指数
1
解决办法
4018
查看次数

ZonedDateTime与MongoDB

试着ZonedDateTimeMongoDB.我可以保存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)

java spring mongodb spring-data-mongodb

10
推荐指数
2
解决办法
1万
查看次数

使用Spring定义Mongo Schema验证

我想使用带有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)

java spring mongodb spring-data-mongodb spring-boot

10
推荐指数
1
解决办法
1065
查看次数

在 Spring Data REST + MongoDB 中使字段可插入但不可更新

使用 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 中。

1.Spring Data注解@ReadOnlyProperty和@Transient

保存到数据库时该字段不可插入。请参阅包readonlypropertytransient_项目中的内容。

2. Jackson注解@JsonProperty(access=READ_ONLY)

通过 POST 请求创建时,该字段不可插入,因为初始化对象时会忽略 JSON 属性。jsonpropertyreadonly请参阅项目中的包。

3.构造函数上的@JsonCreator和setter上的@JsonIgnore

username如果PUT 或 PATCH 请求的 json 正文中包含不可更新的字段,并且username值发生更改,username则会更新,这是意外的。jsoncreator请参阅项目中的包。

4.不要写setter

同3。参见nosetter项目中的package。

5. 开启/关闭功能

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)

没有帮助

Spring Data REST PUT 和 PATCH 内部实现

  • PUT:它使用 JacksonObjectMapper.readerFor(Class)来启动一个新对象
  • PATCH:它使用 Jackson ObjectMapper.readerForUpdating(objectToUpdate).readValue(json) …

jackson spring-data-rest spring-data-mongodb

10
推荐指数
0
解决办法
2020
查看次数

json字符串的Spring数据mongodb查询

我的代码需要支持客户端发送的任何查询.客户端将以json的形式发送查询.我使用java mongo驱动程序低级api使用以下代码完成此操作,
BasicDBObject queryObject = (BasicDBObject) JSON.parse(whereJson.toString());
因为我是spring数据mongodb中的新手,我无法在Query或Criteria类中找到类似的解决方案.我检查了不同的教程,但找不到任何教程.有可能在spring数据mongodb中做或者我应该使用低级apis本身吗?

java mongodb spring-data-mongodb

9
推荐指数
1
解决办法
6626
查看次数