0

ブログの投稿などのデータをドキュメント全体として保存し、必要なすべての情報をドキュメント内に保存するというドキュメントベースのアプローチが本当に気に入っています。したがって、作成者のユーザー名はプレーンテキストとして保存されます。著者自身が、個人情報が添付された独自の文書を持っています。作成者がユーザー名を変更することにした場合はどうなりますか?その作成者によるブログ投稿を含むすべてのドキュメントを更新する必要がありますか、それともこれはドキュメントベースのデータベースを使用する場合の欠点の1つにすぎませんか?

提案をありがとう!

4

1 に答える 1

1

ブログ投稿のコンテンツと作成者の名前を使用してクエリ(ビュー)を作成する必要がある場合は、名前をブログコンテンツに含める必要があるため、すべてのブログ投稿を更新する必要があります。

名前が情報のみの場合(つまり、キーワードや作成者の名前などのブログ投稿コンテンツをクエリしない場合)、ブログドキュメントにIDを追加できます(もちろん、ブログコンテンツと作成者IDをクエリできます)。 {'_id':doc.author_id}を値として発行します。 include_docs=true次に、作成者のドキュメントを提供します(blogpost-docではなくなります。結果行のIDを使用して明示的に呼び出す必要があります)。ブログ投稿を更新する必要はありません。

例: ケース1: 名前で作成者を使用します。名前を含める必要があるため、すべてのドキュメントを更新します。

{
 "_id":"blogpost1",
 "author":"Oliver",
 "keyword":"couchDB"
}

オリバーからのすべてのcouchdb投稿を探すには:

emit ([doc.author,doc.keyword],1) 

電話:

&key=["Oliver","couchDB"]

ケース2: 名前でクエリする必要はありません

    {
     "_id":"blogpost1",
     "author_id":"author-123",
     "keyword":"couchDB"
    }

   emit (doc.keyword,{'_id':doc.author_id})

と著者のドキュメント:

{
"_id":"author-123",
"name":"Oliver"
}

電話:

?key=["couchDB"]&include_docs=true

結果:

...
{"id":"blogpost1","key":"couchDB","value":{"_id":"author-123"},"doc":{"_id":"author-123","_rev":"xxx","name":"Oliver,....
于 2012-03-09T15:57:24.253 に答える