2017-11-07 10 views
1

구름 값 데이터베이스를 사용하여 값을 저장하고 내 문서 ID를 문자열 + 날짜 (ddmmyy)로 지정합니다 (예 : foo071117). 최근은 지난 7 일 동안 문서를 표시하기 위해 문서를 필터링해야합니다. (예 : foo311017 ~ foo061117)이 작업을 수행하기 위해 뷰를 사용했습니다. 이건 내 코드입니다 :보기를 사용하여 문서 ID 필터링 중?

슬라이스 내 JSON 파일이 너무 커질 때를 위해 내가 여러 파일로 파일 (예 : foo0711170, foo0711171)

이 코드는 처음으로에서 일을 분할해야

function (doc) { 
    var datearr = []; 
    var today = new Date() 
    for (var i =1; i<=7; i++){ 
    var datesfull = new Date(today.getFullYear(), today.getMonth(), today.getDate() - i); 
    var dd = datesfull.getDate(); 
    if (dd<10){ 
     dd = '0'+dd; 
    } 
    var mm = datesfull.getMonth()+1; 
    if (mm<10){ 
     mm ='0'+mm 
    } 
    var yy = datesfull.getFullYear().toString().substr(-2); 
    var dates = "foo" + dd + mm + yy; 
    datearr.push(dates); 
    } 
    if((datearr.indexOf(doc._id.slice(0,-1))>=0) || (datearr.indexOf(doc._id)>=0)){ 
    emit(doc._id,doc); 
    } 
} 

실행 후 cloudant보기는 내가 원했던 7 개의 문서 만 보여주었습니다. 그러나 일이 지나면 7 개의 문서 대신 오래된 파일이 남아 있습니다. Cloudant는 내 코드에 지정된대로 View에 7 개의 문서를 표시하도록 새로 고쳐야합니까? 아니면 데이터가 저장되는 방식 때문입니까?

* 나는 내가 단지 필터로보기를 사용할 수 있도록 추출하는 문서 ID 지정하는 코드를 작성하기 위해 내 능력을 제한 powerBI을 사용하고 같은 URL을 사용하여 지난 7 일 동안의 데이터를 쿼리 할 수 ​​없습니다

답변

3

인덱스 정의로 Cloudant에 디자인 문서를 제공하면 뷰가 작성되어 디스크에 저장됩니다. 그런 다음 결과를 얻으려면보기를 나중에 쿼리 할 수 ​​있습니다.

디자인 문서에서 "지금"시간을 얻습니다.이 경우 쿼리가 수행 된 시간이 아니라 인덱싱이 수행되는 시간입니다. 따라서 쿼리 시간의 "지난 7 일 동안"데이터를 추출하는 데 사용할 수 없습니다.

한 가지 해결책은 문서 _id의 작성 방식을 변경하는 것입니다. 다음을 사용하는 경우 : yyyymmdd+string, Cloudend는 _id 필드에 기본 색인이 있으므로 문서가 날짜 순서로 저장됩니다.

그런 다음 : 예컨대 과거 귀하의 제안에 대한

/mydb/_all_docs?startkey=20171101&include_docs=true 
+0

감사에서 핵심적인 칠일부터 시작하여 데이터베이스의 주요 지표를 조회 할 수 있습니다! 나를 위해 일들을 정리하는 데 도움이되었습니다. –