2014-12-29 4 views
1

빈 appointment_id가있는 slot_details가있는 스케줄을 쿼리하는 방법. 다음은 예시적인 데이터 세트는 다음Rails Postgres에서 JSONB 데이터 유형의 쿼리를 사용하십시오.

id: 98, 
    consulting_location_doctor_id: 498, 
    schedule_date: Thu, 15 Jan 2015 00:00:00 IST +05:30, 
    slot_details: 
    [{"end"=>"2015-01-15T15:00:00.000+00:00", "start"=>"2015-01-15T14:30:00.000+00:00", "title"=>" 2:30 pm to 3:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T15:30:00.000+00:00", "start"=>"2015-01-15T15:00:00.000+00:00", "title"=>" 3:00 pm to 3:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T16:00:00.000+00:00", "start"=>"2015-01-15T15:30:00.000+00:00", "title"=>" 3:30 pm to 4:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T16:30:00.000+00:00", "start"=>"2015-01-15T16:00:00.000+00:00", "title"=>" 4:00 pm to 4:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T17:00:00.000+00:00", "start"=>"2015-01-15T16:30:00.000+00:00", "title"=>" 4:30 pm to 5:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T17:30:00.000+00:00", "start"=>"2015-01-15T17:00:00.000+00:00", "title"=>" 5:00 pm to 5:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T18:00:00.000+00:00", "start"=>"2015-01-15T17:30:00.000+00:00", "title"=>" 5:30 pm to 6:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T18:30:00.000+00:00", "start"=>"2015-01-15T18:00:00.000+00:00", "title"=>" 6:00 pm to 6:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T19:00:00.000+00:00", "start"=>"2015-01-15T18:30:00.000+00:00", "title"=>" 6:30 pm to 7:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T19:30:00.000+00:00", "start"=>"2015-01-15T19:00:00.000+00:00", "title"=>" 7:00 pm to 7:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T20:00:00.000+00:00", "start"=>"2015-01-15T19:30:00.000+00:00", "title"=>" 7:30 pm to 8:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T20:30:00.000+00:00", "start"=>"2015-01-15T20:00:00.000+00:00", "title"=>" 8:00 pm to 8:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T21:00:00.000+00:00", "start"=>"2015-01-15T20:30:00.000+00:00", "title"=>" 8:30 pm to 9:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T21:30:00.000+00:00", "start"=>"2015-01-15T21:00:00.000+00:00", "title"=>" 9:00 pm to 9:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T22:00:00.000+00:00", "start"=>"2015-01-15T21:30:00.000+00:00", "title"=>" 9:30 pm to 10:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T22:30:00.000+00:00", "start"=>"2015-01-15T22:00:00.000+00:00", "title"=>"10:00 pm to 10:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T23:00:00.000+00:00", "start"=>"2015-01-15T22:30:00.000+00:00", "title"=>"10:30 pm to 11:00 pm", appointment_id: ""}, 
    {"end"=>"2015-01-15T23:30:00.000+00:00", "start"=>"2015-01-15T23:00:00.000+00:00", "title"=>"11:00 pm to 11:30 pm", appointment_id: ""}, 
    {"end"=>"2015-01-16T00:00:00.000+00:00", "start"=>"2015-01-15T23:30:00.000+00:00", "title"=>"11:30 pm to 12:00 am", appointment_id: ""}], 
    start_and_end_time: Thu, 15 Jan 2015...Fri, 16 Jan 2015, 
    deleted_at: nil, 
    deleted_by_id: nil, 
    created_at: Tue, 30 Dec 2014 04:28:06 IST +05:30, 
    updated_at: Tue, 30 Dec 2014 04:28:06 IST +05:30> 

내가 아니라 guides의 일례를 시도했다. json 배열에 대한 쿼리의 예제는 없습니다. 도와주세요.

+0

가능한 중복의 여기 ?를 사용하려고 시도 속지 않는 [레일즈 4.2를 Postgres Jsonb와 함께 사용하는 방법?] (0120-385-303) – khampson

+0

특별한 이유 JSON을 사용하고 있습니까? 'slot_details'는 매우 일관되게 구조화 된 것처럼 보입니다. 별도의 테이블이 더 좋은 아이디어 일 것입니다. –

+0

@muistooshort 나는이 구조로 가기로 결정했다. 보고있는 행은 의사의 단일 consulting_location에 대한 하루 동안입니다. 의사는 하루에 여러 개의 슬롯이있는 그러한 consulting_location을 여러 개 가질 수 있습니다. 제가 이것을 분리 된 식탁으로 가져 오면, 너무 빨리 커지지 않겠습니까? – Aravind

답변

0

어쩌면 이것은 당신을 도울 수 :

slot -> 'slot_details' @> '[{"end"=>"2015-01-15T20:00:00.000+00:00"}]' 

아이디어가 부분 부분 배열이 포함 된 경우 요청하는 것입니다. 당신은 객체 배열 롤빵에없는 경우 대신 (우리가 프로필 개체가 있다고 가정하자) 다음과 같습니다

profile -> 'basics' @> '{"name":"john"}' 

대신 @>