Cloudantに格納されているJSONデータをまとめて削除する

####やりたいこと
IoT関連のアプリでデバイスからのデータのリポジトリにCloudantを利用する機会が多いんだけど、データがどんどん溜まっていくので過去1日分とか1週間分とか1ヶ月分とかいう単位でまとめてJSONデータを削除したい。

##手順
1. 1週間とか1日とか、まとめて削除したいJSONデータの"_id"と"_rev"を抽出する
2. 抽出したデータに "_deleted": true を追加して削除対象JSONリストを作成
3. 削除対象JSONリストを元にバルク削除を実行

やってみた :sunglasses: 

##1. 1週間とか1日とか、まとめて削除したいJSONデータの"_id"と"_rev"を抽出する
こんなJSONデータで試しました。
    {
      "_id": "0370934188fe1e9281aea6b2ed0bbdc6",
      "_rev": "1-ce846c90c2ada27231b1873982cfbe71",
      "日時": "2015/08/01 19:22:16",
      "料金": "1629632.20",
      "カウンタ": "0"
    }

まずはCloudant Queryで削除したい範囲を検索します。
"2015/08/01 19:25:00" 〜 "2015/08/01 19:26:00" で試しました。

抽出に実行するCloudant Queryはこちら

    "selector": {
      "日時": {
        "$gte": "2015/08/01 19:25:00" , "$lt": "2015/08/01 19:26:00"
      }
    },
    "fields": [
        "_id",
        "_rev"
        ],
    "sort": [
      {
        "_id": "asc"
      }

クエリを実行

    curl -X POST -u ユーザー名:パスワード 'https://自分のアカウント名.cloudant.com/データベース名/_find' -H 'Content-Type: application/json'  -d '{ 
      "selector": {
        "日時": {
          "$gte": "2015/08/01 19:25:00" , "$lt": "2015/08/01 19:26:00"
        }
      },
      "fields": [
        "_id",
        "_rev"
      ],
      "sort": [
        {
          "_id": "asc"
        }
      ]
    }' -o delete_list.json | jq

結果(delete_list.json)

    {
      "docs": [
        {
          "_id": "0370934188fe1e9281aea6b2ed0bd24b",
          "_rev": "1-c14b9f56d6581fa74aa6eed6f73ceba0"
        },
        {
          "_id": "49b4ccc000942b49e8dd622a499c563a",
          "_rev": "1-466fe7daf9463d151147485a020046f6"
        },
        {
          "_id": "8541c09aa7f1cedebef99bab07ee9716",
          "_rev": "1-beedcf978a98a66666cc0571876d459b"
        },
        {
          "_id": "9843508c5ef7a609f66173043ccebf8f",
          "_rev": "1-974091ffdd84e66113f7fff324f21a8d"
        }
      ]
    }

##2. 抽出したデータに "_deleted": true を追加して削除対象JSONリストを作成
すみません、力業です。エディターなりスクリプトなりで "_deleted": true を追加します。

    {
    "docs":[
        {
        "_id":"0370934188fe1e9281aea6b2ed0bd24b",
        "_rev":"1-c14b9f56d6581fa74aa6eed6f73ceba0",
        "_deleted": true
        },
        {
        "_id":"49b4ccc000942b49e8dd622a499c563a",
        "_rev":"1-466fe7daf9463d151147485a020046f6",
        "_deleted": true
        },
        {
        "_id":"8541c09aa7f1cedebef99bab07ee9716",
        "_rev":"1-beedcf978a98a66666cc0571876d459b",
        "_deleted": true
        },
        {
        "_id":"9843508c5ef7a609f66173043ccebf8f",
       "_rev":"1-974091ffdd84e66113f7fff324f21a8d",
        "_deleted": true
        }
    ]}

##3. 削除対象JSONリストを元にバルク削除を実行

    curl -X POST -u ユーザー名:パスワード 'https://アカウント名.cloudant.com/データベース名/_bulk_docs' -H 'Content-Type: application/json'  -d@delete_list.json

    [{"ok":true,"id":"0370934188fe1e9281aea6b2ed0bd24b","rev":"2-86e31665a439b70ee4a6f9bba51e21f8"},
    {"ok":true,"id":"49b4ccc000942b49e8dd622a499c563a","rev":"2-bb140b077868ebe83220239ce7a593e5"},
    {"ok":true,"id":"8541c09aa7f1cedebef99bab07ee9716","rev":"2-e9941dd421292952565b4dcf37fe2c3a"},
    {"ok":true,"id":"9843508c5ef7a609f66173043ccebf8f","rev":"2-c73aa3ede26b2241299a9da7fec80709"}]


##参考URLなど

・Bulk Operations
　https://docs.cloudant.com/document.html#bulk-operations
・Using Cloudant Query Tutorial
　https://cloudant.com/using-cloudant-query-tutorial/
・Accessing the API Using cURL Tutorial
　https://cloudant.com/accessing-the-api-using-curl-tutorial/