2017-01-12 4 views
0

私は現在Cloudantデータベース内のキーの一覧を照会するには、プライマリインデックスを使用しています:python-cloudantを使用して_all_docsプライマリインデックスをキーリストで呼び出す方法は?

class DAO: 

    @staticmethod 
    def get_movie_names(movie_ids: List[int]) -> Dict[int, str]: 

     # The movie_ids in cloudant are stored as strings so convert to 
     # correct format for querying 
     movie_ids = [ str(id) for id in movie_ids ] 

     keys = urllib.parse.quote_plus(json.dumps(movie_ids)) 

     # The movie id is stored in the _id field, so we query it 
     # using the 'keys' parameter 
     end_point = '{0}/{1}/_all_docs?keys={2}&include_docs=true'.format (
                 CL_URL, CL_MOVIEDB, keys 
                ) 
     response = cloudant_client.r_session.get(end_point) 
     movie_data = json.loads(response.text) 

     movie_names = {} 

     if 'rows' in movie_data: 
      for row in movie_data['rows']: 
       if 'doc' in row: 
        movie_id = int(row['key']) 
        movie_name = row['doc']['name'] 
        movie_names[movie_id] = movie_name 
     return movie_names 

私はcloudant.result.Resultを使用してこれを達成することができるかもしれているように見えます。ドキュメントを正しく理解していれば、すべてのドキュメントが返され、返された結果をフィルタリングすることができます。ただし、Cloudantリクエストにパラメータを渡すことでフィルタリングしたいので、興味のあるデータのみを返すようにします。これは可能ですか?

答えて

3

クリス - CloudantDatabaseあなたにはall_docsへのアクセス権があります、それはあなたが望むものですか?

http://python-cloudant.readthedocs.io/en/latest/database.html#cloudant.database.CouchDatabase.all_docs

+0

CouchDatabase/CloudantDatabaseオブジェクトが結果としてall_docsへの呼び出しをラップする追加の利点を有していることを提供custom_resultコンテキストマネージャもあります。 – alfinkel24

関連する問題