2017-02-21 11 views
0

Mongoにraw_docとunique_docの2つのコレクションがあります。 raw_docは、大量のデータを定期的にインポートします(+ 500k行)。 unique_docは、raw_docにある3つのフィールドのすべての一意のインスタンスを持ちます。Mongodbでの2つのコレクション間のすべての参照の一括更新

raw_doc

{Licence : "Free", Publisher : "Jeff's music", Name: "Music for all",Customer:"Dave", uniqueclip_id:12345}, 
{Licence : "Free", Publisher : "Jeff's music", Name: "Music for all",Customer:"Jim", uniqueclip_id:12345} 

unique_doc

{_id:12345, Licence : "Free", Publisher : "Jeff's music", Name: "Music for all"} 

各テーブルにおけるデータの短縮例Iは、それを連結、raw_docへの参照を追加したいです適切なunique_docこれらのフィールドは最終的に編集されるため、キーのunique_docに3つのフィールドを使用することはできませんが、raw_docのデータはそのままになります(したがって、データはもはや一致しますがリンクする必要があります)。

Mongoでunique_docから一括してIDを取得し、適切なraw_docsに挿入するクエリがありますか?

+0

申し訳ありません、もう少し詳しく質問できますか?私が理解できるように、一意の文書の中のraw_docに参照(なぜid?)を入れたいのですが、何かが時間の経過と共に変化するでしょう。 –

+0

IDはまさに私が望むものですが、現在のところ、IDを1つずつ追加する方法しか見ることができません。すべてのIDを更新する単一のクエリが必要です(SQLで可能です)。現在のテストでは、プロセスが1つずつプロセスに数時間かかることが示されています。それは私の好きには長すぎます。 – danspants

+0

それは "_id:12345のライセンスが変更されました"のように、このIDを持つraw_docをすべて更新しますか? –

答えて

0

私自身のIDを前面に出すことは、道にあるようです。私は500k行に対して約120sに処理時間を抑えることができました。

0

updateManyを試すことができます。これを試してください:

db.raw_doc.updateMany({uniqueclip_id:"12345"},{$set:{uniqueclip_id:"54321"}}) 

これはuniqueclip_idが含まれているraw_doc内のすべてのドキュメントを更新します:「12345」と「54321」に設定します。

+0

それは本質的に私が今やっていることですが、それは時間がかかりすぎています。私は自分のIDを生成して何が起こるかを調べるでしょう。 – danspants

+0

それから私は知らない。 –

関連する問題