2017-08-18 4 views
1

CouchDBの初心者として、ドキュメントを更新する方法を理解するのが苦労しています。なぜドキュメントを更新するには2つの方法がありますか?

私は私のために非常に混乱して、私はこれを見つけるドキュメント読んだとき:

1)既存のドキュメントを更新するには、既存の文書

の更新を、あなたは内の現在のリビジョン番号を指定する必要があります。 _revパラメーター

出典:Chapter 10.4.1 /db/doc

2)アップデート機能

更新ハンドラは、クライアントが文書を作成または更新するサーバー・サイド・ロジックを起動することを要求することができる機能です。

出典:Chapter 6.1.4 Design Documents

は、あなたがあなたのドキュメントを更新することを好むかどの方法を教えていただけますか?


編集1:

のは、データ構造がいくつかの基本的なフィールドを持つ単純なcar文書であるとしましょう。

{ 
    "_id": "123", 
    "name": "911", 
    "brand": "Porsche", 
    "maxHP": "100", 
    "owner": "Lorna" 
} 

は今owner変更は、あなたはまだオプション1を使用するのでしょうか? 1つのフィールドだけを編集することはできないので、オプション1にはかなりの欠点があります。最初にすべてのフィールドを取得し、ownerフィールドだけを編集し、ドキュメント全体を返送する必要があります。私はちょうどそれを試したと私はこれがかなり長いことを見つける。うーん...

答えて

2

ほとんどの場合、オプション1の「既存の文書を更新する」を選択したい。これはデータベースにデータを保存する標準的なドキュメント上で動作します。もう1つのオプションは、ビュー(これもドキュメントですが、これは新しいCouchDBユーザーにとっては間違いです)などの設計ドキュメントに関連しています。これは全く異なるものです。

オプション1のスティックと幸運:)

+0

偉大な説明、それに感謝します。ドキュメントを部分的に更新したいときにオプション2を選択するかどうか尋ねてもいいですか?私はそれを検索し、更新ハンドラ関数の使用を参照する回答のみを見つけました。 [回答:23208549](https://stackoverflow.com/a/23208549/8314623)&[回答:41485731](https://stackoverflow.com/a/41485731/8314623)などです。 – Magiranu

+1

あなたは確かに部分的な更新のためのアプローチを取ることができますが、私はそれを必要とするデータ構造を見て興味があります。データ設計はもちろん趣味の問題ではあるが、「より小さな文書が紛争を起こす可能性は低い」と確信している。 –

+0

ロルナ、私は自分のオリジナルの質問を編集して、あなたのコメントに関して簡単な例を加えました。どのオプションを選択するか教えていただければ幸いです!どうもありがとう! – Magiranu

関連する問題