ビュー照合を使用して、マップ内のフィードとデータ ソースを結合できます。
function(doc) {
if (!doc.type) return;
if (doc.type == "feed") emit(doc._id, null);
if (doc.type == "ds" && doc.feed) emit(doc.feed, null);
}
reduce を使用して、データ ソース ドキュメントがリンクしているフィード ID をフィルター処理します。例えば。group_level を使用した組み込み_count
とクエリの使用:
http://127.0.0.1:5984/test/_design/join/_view/not_in?group_level=1
データベースの場合:
{"id":"1", "type":"feed"}
{"id":"2", "type":"feed"}
{"id":"3", "type":"ds", "feed":1}
{"id":"4", "type":"ds", "feed":1}}
あなたに与える:
{"rows":[
{"key":"1","value":3},
{"key":"2","value":1}
]}
値>1
は、データ ソースからの参照を持つフィード ドキュメントです。データソースのない純粋なフィード リストを取得するには、value>1
in client またはlist 関数でレコードを省略できます。
編集:リスト機能付き:
function(head, req) {
var row;
while (row = getRow()) {
if (row.value == 1)
send(row.key + "\n");
}
}
およびクエリ:
http://127.0.0.1:5984/test/_design/join/_list/not_ds/not_in?group_level=1
データ ソースからの参照なしで、フィード ドキュメントを使用して最終結果を取得します。これは ID のリストを含むプレーン テキストであり、JSON 配列用にフォーマットすることもできます。