2017-12-13 14 views
0

私はMongoDb 3.4を使用しており、再配置するのに400.000.000レコードがあります。行のデータ値を持つテーブルでMongodbはネストされたコレクションからテーブルを作成します

{ 
    "_id": ObjectId("5a29777dce2ac011041718e9"), 
    "elements": [{ 
      "IdSensore": "14348", 
      "Valore": -2.5, 
      "idOperatore": "1" 
     }, { 
      "IdSensore": "14351", 
      "Valore": 16, 
      "idOperatore": "1" 
     }, { 
      "IdSensore": "14355", 
      "Valore": 10, 
      "idOperatore": "1" 
     }, { 
      "IdSensore": "14355", 
      "Valore": 356, 
      "idOperatore": "3" 
     } 
    ], 
    "Data": "01/01/2013 00:10:00" 
} 

とidOperatore mathching、複数のフィールドでのみ特定IdSensore(一部はnull):1を は、どのように私はこのような文書を変換することができますか? これは、別のコレクションにエクスポートするための望ましい結果である:この中:つまり

Data     IdSensore:14348 IdSensore:14351 IdSensore:14355 
01/01/2013 00:10:00   -2.5   16    10 

、すべての行で、私は指定された「IdSensore」と「1 idOperatore」のために、すべての「バローレ」を見つけたいのですがサンプル。あなたはこのような何かする必要が

+0

は、[代わりに、それはあなたのために働く場合は、答えを受け入れるか、参照多くを学ぶためにあなたのために働いているソリューションを渡し、タイトルに解決追加しないでください。ツアー] –

答えて

0

db.startCollection.find().forEach(
function(item){ 
    var data1 = item.Data; 
    var finishObject = {}; 
    finishObject["Data"] = data1; 
    item.elements.filter(function(item2){return item2.idOperatore==1}) 
    .forEach(
      function(item2){ 
        finishObject["IdSensore:"+item2.IdSensore] = item2.Valore; 
      } 
    ); 
    db.finishCollection2.insert(finishObject); 
}) 
+0

ありがとうございますが、何らかの問題で走っていません。私は、ペアレント化をペアにするためにyorの提案を書き直しました...しかし、引き返してください。SyntaxError:missing; before文@(シェル):8:18。 – Sandro

+0

申し訳ありません。私は自分のコードを編集しました。 –

+0

素晴らしい!どうもありがとうございました。あなたのソリューションは239639レコード(12Gb RAMとSSDのi7)で5分かかります。私は他の400.000.000レコードで試してみます、おそらく私は一括実行を使用します。 – Sandro

関連する問題