CouchDBでドキュメントを更新する方法を知っていますが、ドキュメントを更新すると、更新用に指定しなかったフィールドが削除されます。同じものを制限するにはどうすればよいですか。たとえば、私のCouchDBドキュメントは、Name、Age、Emailのフィールドで構成されており、このドキュメントのemailフィールドのみを更新したいと思います。したがって、電子メールフィールド、その値、ドキュメントID、およびそれに対応するリビジョンを渡すだけです。しかし、そのような更新を行うと、私のドキュメントは電子メールのみで構成されます。これを制限するにはどうすればよいですか。つまり、残りのフィールドとその値をそのままにして、電子メールIDのみが更新されます。私はjquery.couch.jsを使用しています
質問する
439 次
2 に答える
3
おそらく、あなたはそれをすべて間違っています... CouchDBで問題をCouchDB以外の方法で解決しようとしています。すべてのコメントを 1 つのドキュメントに保存するのはなぜですか? 投稿で 1 つのリクエストでそれらを取得する場合は、マップを使用して、次のように別のドキュメントから投稿とコメントを集約できます。
投稿文書:{ _id: "post1", type: "post", ... }
コメント文書:
{ type: "comment",
post: "post1", // id of the post being commenting
...
}
地図:
function (self) {
if (!self.type) return;
if (self.type == "post") {
emit([self._id, 0], self);
} else if (self.type == "comment" && self.post) {
emit([self.post, 1, self.time], self);
}
}
コメント付きの投稿を日付順に並べ替えて取得:
curl http://127.0.0.1:5984/yourdb/_design/yourapp/_view/yourview?startkey=[%22post1%22]&endkey=[%22post1%22,{}]
このようにして、コメントの一部のみを取得し、ページングを簡単に実装することもできます。すべてのコメントは投稿の近くの B ツリーに保存されるため、効率的でもあります。
同じアプローチについては、こちらで詳しく説明しています。
于 2012-08-07T12:13:32.513 に答える
2
そのため、メール フィールド、その値、ドキュメント ID、および対応するリビジョンを渡すだけです。
更新する値だけでなく、更新された値でドキュメント全体を保存する必要があります。ドキュメント自体を 1 つの大きな複合値と考えてください。全体を変更せずに一部を変更することはできません。
于 2012-08-06T12:16:44.687 に答える