2017-12-15 1 views
0

mongodb를 쿼리하여 저자 이름이 "Vinod"인 모든 발행물을 검색하는 방법은 무엇입니까?스프링 mongodb @DBRef 기본 쿼리에서 상위 필드를 검색하는 쿼리

여기 내 출판 클래스

@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); 
+0

을 할 수있는 방법 쿼리하는

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

일을해야합니까? 스프링 데이터 저장소를 사용하고 있습니까? – pvpkiran

+0

@pvpkiran - 쿼리로 질문을 업데이트했습니다. – VK321

답변

0

이 또한

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

나는 이것을 테스트하지는 않았지만 스프링 쿼리 빌더를 찾지 못했다. Frontend에서 Jquery Query 빌더를 사용할 때 BasicQuery 클래스를 사용하여 쿼리를 작성해야한다. http://querybuilder.js.org/demo.html – VK321

+0

BasicQuery는 Query의 하위 클래스입니다. – pvpkiran

관련 문제