2016-08-10 51 views
0

我完全不熟悉MongoDB所以赦免,如果我的問題太簡單。什麼是最好的文件格式上傳到MongoDB

我有4數據集並且每個數據集都有對應於樣本的文件,每個樣本有3個文件對應三種標準化方法。所有4個數據集中的樣本總數爲20000,因此總文件數爲60000(因爲有3種歸一化方法)。每個文件大約有2-5列和60000行。我想創建哪種類型的具有下列的數據庫:

Dataset, Sample, Type, Normalization, ID, Value 

例子:對於一個數據集Pnoc,我有一個樣品C021_0001_20140916這是Tumor,它具有相當於三個文件標準化方法Kallisto,RSEM_GenesRSEM_Isoforms。所有這些信息都以文件名編碼。該IDtarget_idtpm採取從文件內容中:

target_id length eff_length est_counts tpm 
ENST00000619216.1 68 22.4958 3.07692 1.17482 
ENST00000473358.1 712 527.104 0 0 
ENST00000469289.1 535 350.229 0 0 
ENST00000607096.1 138 16.1984 0 0 
ENST00000417324.1 1187 1002.07 0.071357 0.000611642 
ENST00000461467.1 590 405.167 0 0 
ENST00000335137.3 918 733.078 0 0 
ENST00000466430.5 2748 2563.07 233.847 0.783663 
ENST00000495576.1 1319 1134.07 0 0 

我在python編寫腳本來通過每個文件遞歸去,創建一個JSON對象,那麼我就要上傳到腳本本身的MongoDB。 JSON對象我想看起來像這樣:

# 20000 Sample names, 3 Normalization methods and 60000 IDs in each file. 
DatasetName1 { 
    SampleName1 { 
     Type { 
      Normalization1 { 
       { ID1: value, Expression: value }, 
       { ID2: value, Expression: value }, 
       ... 
       { ID60000: value, Expression: value } 
      }, 
      Normalization2 { 
       { ID1: value, Expression: value }, 
       { ID2: value, Expression: value }, 
       ... 
       { ID60000: value, Expression: value } 
      }, 
      Normalization3 { 
       { ID1: value, Expression: value }, 
       { ID2: value, Expression: value }, 
       ... 
       { ID60000: value, Expression: value } 
      } 
     } 
    }, 
    SampleName2 { 
     Type { 
      Normalization1 { 
       { ID1: value, Expression: value }, 
       { ID2: value, Expression: value }, 
       ... 
       { ID60000: value, Expression: value } 
      }, 
      Normalization2 { 
       { ID1: value, Expression: value }, 
       { ID2: value, Expression: value }, 
       ... 
       { ID60000: value, Expression: value } 
      }, 
      Normalization3 { 
       { ID1: value, Expression: value }, 
       { ID2: value, Expression: value }, 
       ... 
       { ID60000: value, Expression: value } 
      } 
     } 
    }, 
    ... 
    SampleName20000{ 
     Type { 
      Normalization1 { 
       { ID1: value, Expression: value }, 
       { ID2: value, Expression: value }, 
       ... 
       { ID60000: value, Expression: value } 
      }, 
      Normalization2 { 
       { ID1: value, Expression: value }, 
       { ID2: value, Expression: value }, 
       ... 
       { ID60000: value, Expression: value } 
      }, 
      Normalization3 { 
       { ID1: value, Expression: value }, 
       { ID2: value, Expression: value }, 
       ... 
       { ID60000: value, Expression: value } 
      } 
     } 
    } 
} 

但是之前,我開始寫劇本來處理這麼多的文件,並轉換到JSON,我想知道到底是上傳到MongoDB的最好的格式 - JSON /明文/ csv或任何其他格式?

請讓我知道,如果我可以提供任何其他關於我的代碼的信息。

謝謝!

+0

您需要解析每個文件,並需要將其內容上傳到MongoDB集合,無需上傳文件。正確? – user10

+0

從技術上講,我必須上傳整個文件內容。我只是不知道什麼是最好的方式,所以我正在考慮將內容轉換爲JSON,然後上傳到mongodb。 –

+0

您的示例嵌套有子文檔。爲此,您只能使用json格式。你不能使用csv。解析所有文件並將其內容寫入json文件。然後使用mongoimport實用程序將json文件導入到MongoDB中。 – user10

回答

0

爲了您的要求,我會在下面的方式做到這一點。

使用下面的列創建CSV。解析您的文件並將數據轉儲到CSV中。在任何編程語言中,CSV創建都非常簡單。

dt_set, sample, type, norm, id, value 

之後,使用MongoImport將您的CSV導入到MongoDB中。這個模式對您的需求來說比較容易。聚合,過濾等都比較容易。我覺得你的嵌套結構的例子很複雜。

相關問題