>

내 클래스 구조에 따라 기존 이벤트 문서에 새 트랙을 삽입해야합니다

class Event
{ 
    String _id; 
    List<Track> tracks;
}
class Track
{
    String _id;
    String title;
}

기존 문서는

{
  "_id":"1000",
  "event_name":"Some Name"
}

삽입 후 문서가 나타납니다

{
  "_id":"1000",
  "event_name":"Some name",  
  "tracks":
   [
     {
        "title":"Test titile",
     }
  ]
}

mongoTemplate spring data mongodb를 사용하여 트랙을 기존 문서에 어떻게 삽입 할 수 있습니까?

  • 답변 # 1

    먼저 Event 에 주석을 달아야합니다   @Document 클래스 :

    @Document(collection = "events")
    public class Event
    {
        // rest of code
    }
    
    

    이벤트를 추가하는 코드는 다음과 같아야합니다 :

    @Repository
    public class EventsDao {
        @Autowired
        MongoOperations template;
        public void addTrack(Track t) {
            Event e = template.findOne
                (new Query(Criteria.where("id").is("1000")), Event.class);
            if (e != null) {
                e.getTracks().add(t);
                template.save(e);
            }
        }
    }
    
    

    참고: Event 를 변경해야합니다 의 클래스 String _id;   String id; 로  이 예가 작동하려면 (또는 검색어 리터럴을 변경)

    트랙을 업데이트하는

    편집도 매우 쉽습니다. 첫 번째 트랙의 제목을 변경한다고 가정 해 봅시다 :

    Event e = template.findOne(new Query(Criteria.where("_id").is("1000")), Event.class);
    if (e != null) {
        e.getTracks().get(0).setTitle("when i'm 64");
        template.save(e);
    }
    
    

관련 자료

  • 이전 c++ - 심볼릭 링크가 가리키는 파일의 경로를 어떻게 결정합니까?
  • 다음 jquery - __dopostback이 예상대로 작동하지 않습니다