2013-01-19 4 views
6

は、私は、次のLINQクエリのCouchDBのJSビューと同等を探しています:データソースは、フィードへの外部キーを持ってSql NOT INのCouchDBに相当しますか?

var query = 
     from f in context.Feed 
     where !(from ds in context.DataSource 
       select ds.Feed_ID) 
     .Contains(f.ID) 
     select f; 

。一言で

は:すべてのデータソースに関連付けられていないフィードを取得あなたがマップにフィードし、データソースに参加する view collationを使用することができます

+0

詳細を読むことができます「をすべて取得します特定のデータソースに関連付けられていないフィード 'または'すべてのデータソースに関連付けられていないすべてのフィードを取得する ' – joscas

答えて

2

はありがとう:

function(doc) { 
    if (!doc.type) return; 
    if (doc.type == "feed") emit(doc._id, null); 
    if (doc.type == "ds" && doc.feed) emit(doc.feed, null); 
} 

をしてまで減らしますそれらにリンクするデータソース文書を持つフィードIDをフィルタリングします。例えば。 group_levelbuild-in_countとクエリの使用:

{"id":"1", "type":"feed"} 
{"id":"2", "type":"feed"} 
{"id":"3", "type":"ds", "feed":1} 
{"id":"4", "type":"ds", "feed":1}} 

はあなたを与えるだろう:データベースの

http://127.0.0.1:5984/test/_design/join/_view/not_in?group_level=1 

{"rows":[ 
{"key":"1","value":3}, 
{"key":"2","value":1} 
]} 

>1は、データソースからの参照を持っているそれらのフィードのドキュメントです。純粋なフィードリストを取得するには、value>1またはlist functionのレコードを省略することができます。

編集:リスト機能付き

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配列のためにフォーマットすることもできます。

0

へのまっすぐな回答CouchDB相当のSql NOT INに相当しません。 ではcouchdb view APIには照会オプションがありません。ではありません。

しかし、あなたがいないデータソースか特定のデータソースに関連付けられていないに関連したフィードを得ることに興味を持っている場合によっては、あなたの目標を達成するための別の方法があるかもしれません。

0

私はこれが古い投稿だと知っていますが、同じ問題に直面していますが、私はMarcinの答えは正しいが、不完全だと思います。

私の場合は、特定のexcludeIdを持つものを除くすべての行を取得選択するには、以下のリスト機能を使用:

function(head, req) { 
start({ 'headers': { 'Content-Type': 'application/json' } }); 
var rows = []; 
while (row = getRow()) { 
    if (!req.query.exceptId || doc.documentId != req.query.exceptId) { 
     rows.push(row); 
    } 
} 
send(JSON.stringify({ total_rows: rows.length, rows: rows })); 
} 

あなたはあなたが意味here

関連する問題