2012-01-28 1 views
1

CouchDB 1.1、Windows。布団を許可していません:
私はこのCouchDBの多くのドキュメントで_IDを変更する必要がある場合に最適なパスは何ですか?

{ 
    "_id": "0 2 rock-inorganic 10 -50 30 a", 
    "inner-coord": [50, 90, 20], 
    "map": ... 
    ... 
}

{ 
    "_id": "0 rock-inorganic 2 m m 10 -50 30 a", 
    "inner-coord": [50, 90, 20], 
    "map": ... 
    ... 
}

は、(多くの/シングル)文書は「_id」の名前を変更するために、単純なパスを提案してください(例)この構造から、私のデータベースを再編成しますそれ。

+0

あなたは自分自身の '_id'を絶対に指定する必要がありますか? –

+0

はい、Dominic。私のデータベースでは問題ありません。アプリケーションのビューを効果的に検索および構築できます。 –

答えて

1

保存設計ドキュメント内の次のビュー:

マップ:

function (doc) { 
    function isOldDoc() { 
    // IT'S AN EXAMPLE: CHANGE IT TO FIT YOUR NEEDS 
    return doc._id.match(/^\d \w+ \d \w \w \d+ -?\d+ \d+ \w$/); 
    } 

    if (isOldDoc()) { 
    emit(doc._id, 1); 
    } 
} 

これは、あなたが上で動作するために必要なすべての文書を返します。

include_docs=trueでビューを照会するためのスクリプトを作成して、各行について、実行します。

  • 古い文書を削除して新しい_id
  • で文書を保存します。

また、あなたは_all_docsを照会し、古いフォーマットの各row.idのために、古い_idDELETE続い新しい_idCOPYDestinationとのセットを行うことができます。

+0

ありがとう、マルセロ。私が知っているこのシーケンス。たぶん、存在している**最も単純な**ソリューションの名前を変更する**すべての** _IDデータベース(コマンドラインのCURL?)。 –

+1

@Andrey、私は記事で概説したように、あなたはCOPYとDELETEを使うことができます。コピーでは、ドキュメント全体を取得する必要はありません。 –

関連する問題