私はcouchDBクライアントであるCradleと多くの仕事をしてきました。ただし、キーと値のペアで満たされたドキュメントがあり、そこで特定の行を削除しようとしています。
ドキュメントでは、ドキュメント全体を削除したり、null値で更新したりしない削除方法を見つけることができません。誰かが私を正しい方向に向けることができますか?これは、多くの人が遭遇する非常に単純な問題である可能性が高いと思います。
私はcouchDBクライアントであるCradleと多くの仕事をしてきました。ただし、キーと値のペアで満たされたドキュメントがあり、そこで特定の行を削除しようとしています。
ドキュメントでは、ドキュメント全体を削除したり、null値で更新したりしない削除方法を見つけることができません。誰かが私を正しい方向に向けることができますか?これは、多くの人が遭遇する非常に単純な問題である可能性が高いと思います。
CouchDBでは、部分的なドキュメント更新のサポートはありません(これのサポートは時々議論されますが、JSONにパッチを適用する方法が受け入れられていないため、それほど遠くなることはありません)。したがって、ドキュメント全体を次のように更新する必要があります。不要なキーと値のペアが削除されたコピー。
さて、私はこれを回避する解決策を見つけました。
キーと値のペアのリストを含むドキュメントを作成する代わりに、1つのフィールドを含むドキュメントを作成し、その値にキーと値のペアのJSONを挿入します。これにより、ドキュメント全体を再作成しなくても、値を取得してフィールドを削除し、元の値に保存することができます。
クレードルを使用した例を次に示します。
db.get('document', function (err, doc) {
var inside_key_values = doc.key_value_pair;
delete inside_key_values[key_to_delete];
db.merge("document", {
key_value_pair: inside_key_values
}, function (err, res) {
console.log('New key value pairs saved')
});
});
これはすべて、couchDB側でのサポートの欠如に対する@djcの素晴らしい応答に基づいています。うまくいけば、他の誰かがこの回避策が価値があると思うでしょう。