【问题标题】:Spring mongodb @DBRef query to search parent field in Basic QuerySpring mongodb @DBRef 查询以在基本查询中搜索父字段
【发布时间】:2017-12-15 10:03:09
【问题描述】:

如何查询 mongodb 以搜索所有作者名字为“Vinod”的出版物?

这是我的出版课

@Document(collection = "publications")
public class Publication {

    @Id
    private String id;

    private String title;

    private Date publicationDate;

    @DBRef
    private Author author;

    //getter and setters here
}

我的作者类是

@Document(collection = "authors")
public class Author {

    @Id
    private String id;

    @Indexed(unique = true)
    private String username;

    private String firstName;

    private String lastName;

    //getter and setters here
}

这是它在数据库中的存储方式。

出版

{
  "_id" : ObjectId("5a339cc4e193d31c47916c2c"),
   "_class" : "com.publication.models.Publication",
  "title" : "Some title",
  "publicationDate" : ISODate("2017-12-15T09:58:28.617Z"),
  "author" : {
    "$ref" : "authors",
    "$id" : ObjectId("5a339cc0e193d31c47916ad0")
  }
}

作者:

{
  "_id" : ObjectId("5a339cc0e193d31c47916ad0"),
  "_class" : "com.publication.models.Author",
  "username" : "abcd0050",
  "firstName" : "Vinod",
  "lastName" : "Kumar"
}

这就是我需要查询的方式。

BasicQuery query = new BasicQuery("{ author.name : 'vinod' }");
Publication test = mongoOperation.find(query, Publication.class);

【问题讨论】:

  • 您查询的怎么样?使用弹簧数据存储库?
  • @pvpkiran - 使用查询更新问题。

标签: java spring mongodb spring-boot mongoose


【解决方案1】:

我为你推荐 RelMongo,它是一个基于 Spring Data 构建的小框架,允许以 JPA 方式将 @OneToMany 和 @OneToOne 注释与 MongoDB 集合一起使用

【讨论】:

    【解决方案2】:

    这应该可以工作

    Query query = Query.query(new Criteria("author.name", "vinod"));
    Publication test = mongoOperation.find(query, Publication.class);
    

    你也可以

    BasicQuery basicQuery = new BasicQuery().addCriteria(new Criteria("author.name", "vinod"))
    

    【讨论】:

    • 我没有测试过这个,但我不是在寻找 spring 查询生成器。我需要使用 BasicQuery 类来构建查询,因为我在前端使用 Jquery Query builder。 querybuilder.js.org/demo.html
    • BasicQuery 是 Query 的子类。
    猜你喜欢
    • 2013-08-01
    • 2012-11-01
    • 2012-03-02
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2017-10-31
    • 1970-01-01
    相关资源
    最近更新 更多