2017-11-07 9 views
1

クラウドデータベースを使用して値を保存していて、 文書IDをstring + date(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); 
    } 
} 

実行した後、雲のビューは私が欲しかった7つの文書しか示していませんでした。ただし、日数が過ぎると、古いファイルは7つのドキュメントではなく、古いファイルに残ります。 Cloudantは、自分のコードで指定されたビュー内の7つのドキュメントを表示するためにリフレッシュする予定ですか?これはデータの格納方法ですか?

*私は私が唯一のフィルタとしてビューを使用することができますので、抽出するために、どの文書IDを指定するコードを記述するために自分の能力を制限powerBIを使用していますとしてURLを使用して、過去7日間のデータを照会することはできません

答えて

3

索引定義を使用してCloudantに設計文書を提供すると、そのビューは作成され、ディスクに保管されます。その後、ビューをクエリして結果を得ることができます。

デザインドキュメントでは、「今」の時間が得られます。この場合は、クエリが実行された時間ではなく、インデックス作成が実行される時間です。したがって、(クエリ時間の)「過去7日間」のデータを抽出するために使用することはできません。

あなたの文書_idの作成方法を変更することが1つの解決策になります。たとえば、yyyymmdd+stringを使用した場合、Cloudantには_idフィールドのプライマリインデックスがあるため、ドキュメントは日付順に格納されます。

それから:例えば過去のご提案のための

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

おかげでキー7日から開始し、データベースの主インデックスを問い合わせることができます!私のために物事をクリアするのを助けた –

関連する問題