具有Spring Boot的MongoDB和包含相似字段的文档

时间:2018-12-09 13:31:10

标签: mongodb spring-boot spring-data-mongodb

我当前正在尝试访问MongoDB数据库中的对象。

我的对象以这种格式存储在db中:

{
"_id" : ObjectId("some object id"), // mongodb gives this id
"my_id" : "Given id by myself",
"url" : "Some string data"
}

Myobj类:

@Document(collection = "MYOBJ")
public class Myobj {

    @Id
    private ObjectId _id;

    private String my_id;

    private String url;
    // getters and setters and other methods
}

我想使用my_id字段获取此对象。在我的存储库中,有这些:

public interface MyobjRepository extends MongoRepository<Myobj, String> {
    Myobj findBy_id(ObjectId _id);
    Myobj findByMy_id(String my_id);
}

但是它无法构建,它给了我这个错误:

  

没有找到Myobj类型的属性!您是说'url'吗?

我想my_id和_id之间不能区分开。如何在不更改数据库对象的情况下解决此问题?

没有findByMy_id方法,它正在工作。该方法会导致编译错误。

2 个答案:

答案 0 :(得分:0)

问题是您在接口MyobjRepository中将 String 设置为该模板MongoRepository<Myobj, String>的ID,并且您需要将{em> ObjectId 设置为{{ 1}},因为您在MongoRepository<Myobj, ObjectId>类中说过Myobj将用ObjectId _id

我对吗?

答案 1 :(得分:0)

@Document(collection = "MYOBJ")
public class Myobj {
    private ObjectId _id;

    @Id
    private String my_id;

    private String url;

}
public interface MyobjRepository extends MongoRepository<Myobj, String> {
    Myobj findBy_id(ObjectId _id);
    Myobj findByMy_id(String my_id);
}