1

私はcouchdbストレージに次のjson(簡略化)オブジェクトを持っています:

[{
    "_id": "5ea7a53e670b432e0fe22a7bc10024db",
    "_rev": "1-ae70c8906f7aa6d73539a89f7ad960ee",
    "type": "job"
}, {
    "_id": "5ea7a53e670b432e0fe22a7bc10041d9",
    "_rev": "4-fa0ba68c35ca548b497a7309389f9087",
    "type": "scan",
    "job_id": "5ea7a53e670b432e0fe22a7bc10024db",
    "number": 1
}, {
    "_id": "5ea7a53e670b432e0fe22a7bc100520e",
    "_rev": "4-3e6b1a028786c265ecb7362e245d049e",
    "type": "scan",
    "job_id": "5ea7a53e670b432e0fe22a7bc10024db",
    "number": 2
}]

キー ["5ea7a53e670b432e0fe22a7bc10024db", 2] (ジョブ ID とスキャン番号) を使用して投稿リクエストを作成したいと考えています。指定された ID と、job_id と数値に一致する測定値を持つジョブを除外するビューのマップ関数を作成するにはどうすればよいですか?

ありがとう、ラドゥ

4

1 に答える 1

1

リクエストの出力は何を期待していますか? スキャンを取得したいだけの場合は、map検索したいキーを発行します。

function (doc) {
  if (type == "scan" && number) {
    emit([doc.job_id, doc. number], doc);
  }
}

2 つのドキュメントが必要な場合は、ジョブ (完全なドキュメントでありid、.emitinclude_docs=true

function (doc) {
  if (doc.type == "scan" && doc.number) {
    emit([doc.job_id, doc. number], {scan: doc, _id: doc.job_id});
  }
}

または 2emitで:

function (doc) {
  if (doc.type == "scan" && doc.number && doc.job_id) {
    emit([doc.job_id, doc. number, "job"], {_id: doc.job_id);
    emit([doc.job_id, doc. number, "scan"], {_id: doc._id});
  }
}

startkey=["5ea7a53e670b432e0fe22a7bc10024db", 2]&endkey=["5ea7a53e670b432e0fe22a7bc10024db", 2, {}]&include_docs=trueURL に(または)を含む両方のドキュメントを取得keys=[]します。

オプションについてはビュー APIを確認してください。include_docs

于 2012-09-09T16:46:19.977 に答える