【发布时间】:2019-06-04 18:59:48
【问题描述】:
我还有一个以前从未遇到过的有趣案例,所以我向 SO 社区寻求帮助并分享我的经验。
案例 ||我们有什么:
-
具有这种结构的
csv文件(从其他 SQL DB 导出) (标题):ID,SpellID,Reagent[0],Reagent[1..6]Reagent[7],ReagentCount[0],ReagentCount[1..6],ReagentCount[7]您还可以在此处查看完整的
-csv数据文件,at my dropbox -
My gist from Github,它可以帮助您了解
MongoImport的工作原理。
我们需要什么:
我想接收这样的结构(模式)以将其导入MongoDB 集合:
ID(Number),SpellID(Number),Reagent(Array),ReagentCount(Array)
6,898,[878],[1]
使用 ID、SpellID 和两个数组,首先我们存储所有试剂 ID,例如来自所有 Reagent[n] 列的 [0,1,2,3,4,5,6,7],并在第二个数组中我们有一个长度相同的数组,代表 quantity 的 ReagentID,来自所有 ReagentCount[n]
或
具有这种结构的转置对象(模式):
ID(Number),SpellID(Number),ReagentID(Number),Quantity/Count(Number)
80,2675,1,2
80,2675,134,15
80,2675,14,45
如您所见,第一个示例和这个示例之间的区别在于,集合中的每个文档都代表每个ReagentID,其数量为SpellID。因此,如果一个Spell_ID 有N 不同的试剂,那么集合中将是N 文档,因为我们都知道,根据我们的Reagent_ID 不能超过7 个唯一的Reagent_ID -csv 文件。
在
node js和npm i csv(或任何其他用于解析csv文件的模块)的帮助下,我现在正在解决这个问题。只是为了让我的csv文件可以通过mongoose导入我的数据库。我将非常感谢所有可以为本案提供任何相关贡献的人。但无论如何,我最终会解决这个问题并在这个问题中分享我的解决方案。至于第一个变体,我想 MongoImport 应该有一次性脚本,可以通过 -fields 将
Reagent[n]和ReagentCount[n]中的所有列连接到我上面提到的两个单独的数组,但不幸的是我没有知道它,并且没有关于 SO 或与其相关的官方 Mongo 文档的示例。因此,如果您对MongoImport有足够的经验,请随时分享。
【问题讨论】:
标签: javascript mongodb csv mongoose mongoimport