別の(Python)のIDを介して1つのcouchdb docからデータを引き出す

StackOverflow https://stackoverflow.com/questions/4052220

  •  27-09-2019
  •  | 
  •  

質問

CouchDBに2つのデータベースがあります-DB1のドキュメントはユーザーデータです - 名前、メールアドレス、ユーザー名、パスワードですが、1つのフィールド内で、ユーザープロジェクトが保存されているDB2に保存されたIDのリストを保存します(ユーザー名フィールドと一部のテキストフィールドが含まれています。

    Example DB1 Document (Users)

       {
   "_id": "bobsmith1000",
   "_rev": "83-1e00173cac0e736c9988d3addac403de",
   "first_name": "Bob",
   "password": "$2a$12$sdZUkkyDnDePQFNarTTgyuUZS6DL13JvBk/k9iUa5jh08gWAS5hpm",
   "second_name": "Smith",
   "urls": null,
   "email": "bob@smith.com",
   "projects": [
       "ee5ccf56da22121fd71d892dbe051746",
       "ee5ccf56da22121fd71d892dbe0526bb",
       "ee5ccf56da22121fd71d892dbe053433",
       "ee5ccf56da22121fd71d892dbe056c71",
       "ee5ccf56da22121fd71d892dbe0579c3",
       "ee5ccf56da22121fd71d892dbe05930d"
   ]
}

Example DB2 Document (Projects)

{
   "_id": "ee5ccf56da22121fd71d892dbe05930d",
   "_rev": "1-c923fbe9de82318980c7778c4c089321",
   "url": "http://harkmastering.s3.amazonaws.com/testprojects/testfolder.zip",
   "username": "bobsmith1000",
   "time": "2010-10-29 07:13:47.377085",
   "file_size": "5.2 MB"
}

DB1をチェックし、すべてのプロジェクトIDをつかんでからDB2に移動し、Batchの方法でURLを引き出し、時間、ファイル化するビュー(Flask Web FrameworkとPython CouchDBライブラリを使用)でビューを作成しようとしています。 IDを一致させる各ドキュメントがあるので、そのデータをテーブルに配置できます。

私は今年初めにプログラミングを始めたばかりで、これには想像できるテクニックが含まれます。誰かが私が解決策を見つけるのを手伝ってくれますか?

親切なありがとう

役に立ちましたか?

解決

ドキュメントを異なるDBSで分割する大きな理由がない限り、質問によるとそうではないように思われますが、それらはすべて同じデータベースにそれらを保持し、ドキュメントにいくつかのプロパティを持っている必要があります。タイプ:ユーザー "および" type:project ")。

そうすれば、あまり問題なく単一のCouchDBビューで望ましい結果を得ることができます。ビューマップ関数では、["username"、0]や["username"、 "projectname"]などのキーを放出する必要があります。 JavaScriptでそれは次のとおりです。

function(doc) {
 if (doc.type == "user") {
  emit([doc._id,0],null);
 } else if(doc.type == "project") {
  emit([doc.username,doc._id],null);
 }
}

それらは、そのビューを照会し、整理されたドキュメントのセットを持つことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top