csv文件包含多个字段,但这里只有两个字段:ID
和CODE
。可能存在重复项(多行具有相同的ID
和CODE
值。目标是获取类似
{
"_id" : ObjectId("5001"),
"CODE" : [ code1 , code2 , code3 ],
"ID" : "10001"
}
{
"_id" : ObjectId("5002"),
"CODE" : [ code3 ],
"ID" : "10002"
}
{
"_id" : ObjectId("5003"),
"CODE" : [ code2 , code3 ],
"ID" : "10003"
}
其中CODE
数组包含唯一元素,并且没有重复的ID
文档。
csv文件很大(cut | sort | uniq
不是一个选项)。我目前的方法是创建一个唯一_u
值的ID
字典,然后创建一个索引集合:
for ID in _u:
ID_obj = { "ID" : ID ,
"CODE" : [] }
z = db.my_collection.insert( ID_obj )
z = db.my_collection.ensure_index( "ID" , unique = True )
然后我遍历csv文件的行,确保CODE
数组只保留唯一值:
z = db.my_collection.update({ "ID" : ID } , {"$addToSet":{ "CODE" : csv_code_value }}, True )
将csv数据加载到my_collection
的最有效方法是什么?
csv数据本身有00列,但相关结构是:
ID,CODE,DESC,DATE
10003,code2,second description,10/7/2010
10001,code1,first description,10/1/2010
10003,code3,third description,10/8/2010
10003,code3,third description,10/9/2010
10001,code1,first description,10/2/2010
10001,code1,first description,10/3/2010
10001,code2,second description,10/4/2010
10002,code3,third description,10/6/2010
10001,code3,third description,10/5/2010