Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring mongodb@DBRef查询在基本查询中搜索父字段_Java_Spring_Mongodb_Spring Boot_Mongoose - Fatal编程技术网

Java Spring mongodb@DBRef查询在基本查询中搜索父字段

Java Spring mongodb@DBRef查询在基本查询中搜索父字段,java,spring,mongodb,spring-boot,mongoose,Java,Spring,Mongodb,Spring Boot,Mongoose,如何查询mongodb来搜索作者名字为“Vinod”的所有出版物 这是我的出版课 @Document(collection = "publications") public class Publication { @Id private String id; private String title; private Date publicationDate; @DBRef private Author author; //get

如何查询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);
这应该行得通

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"))

我建议您使用RelMongo,它是一个构建在Spring数据之上的小框架,允许以JPA方式对MongoDB集合使用@OneToMany和@OneToOne注释

您如何查询?使用spring数据存储库?@pvpkiran-更新了查询问题。我还没有测试过这个问题,但我没有寻找spring查询生成器。我需要使用BasicQuery类构建查询,就像我在前端使用Jquery查询生成器一样。BasicQuery是Query的一个子类。