【发布时间】:2016-08-10 15:52:03
【问题描述】:
我对 MongoDB 完全不熟悉,如果我的问题太简单,请原谅。
我有4个数据集,每个数据集都有对应样本的文件,每个样本有3个文件对应三种归一化方法。所有 4 个数据集中的样本总数为 20000,因此文件总数为 60000(由于 3 种归一化方法)。每个文件大约有 2-5 列和 60000 行。我想创建一个具有以下列的数据库:
Dataset, Sample, Type, Normalization, ID, Value
示例:对于 dataset Pnoc,我有一个 sample C021_0001_20140916 Tumor type 并且它有文件对应三个标准化方法Kallisto、RSEM_Genes和RSEM_Isoforms。所有这些信息都编码在文件名中。 ID 和 value 将取自文件内容中的 target_id 和 tpm:
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/plaintext/csv 或任何其他格式?
如果我可以提供有关我的代码的任何其他信息,请告诉我。
谢谢!
【问题讨论】:
-
您需要解析每个文件并将其内容上传到 MongoDB 集合中,无需上传文件。对吗?
-
技术上我必须上传整个文件内容。我只是不知道什么是最好的方法,所以我正在考虑将内容转换为 JSON,然后上传到 mongodb。
-
您的示例有嵌套的子文档。为此,您只能使用 json 格式。您不能使用 csv。解析所有文件并将其内容写入 json 文件。然后使用 mongoimport 实用程序将 json 文件导入 MongoDB。
-
是的,我举了一个例子来说明我是如何考虑创建一个 JSON 对象的。我只是想知道这是否更快或从文件中读取每一行并作为 csv 或 tsv 上传到 mongodb。
-
这个导入的目的是什么?你打算用这些数据做一些分析吗?如果是这个原因,我不会以这种方式导入它。我将以不同的方式对其进行架构。