代码之家  ›  专栏  ›  技术社区  ›  Robert O'Brien

将Null项插入集合Mongodb(Pymongo)

  •  0
  • Robert O'Brien  · 技术社区  · 4 年前

    免责声明:说到蒙古,我是个新手。。

    因此,我从一个文本文件中获得了这些数据,我正在将其处理为“python字典”格式,以便将其插入到我使用Pymongo创建的集合中。

    原始数据已更改为文本,抱歉。。。可以在pastebin上查看 Link to raw data text

    这是python中用于插入的格式化字典

    [{'Poll_Name': 'ECU', 'Date': '2020-05-07', 'Sample_Size': '--', 'MoE': '--', 'Biden (D)': '46', 'Trump(R)': '43', 'Spread': 'Trump +3'}, {'Poll_Name': 'WRAL-TV', 'Date': '2020-04-23', 'Sample_Size': '580 LV', 'MoE': '5.5', 'Biden (D)': '45', 'Trump(R)': '50', 'Spread': 'Biden +5'}, {'Poll_Name': 'PPP (D)', 'Date': '2020-04-14', 'Sample_Size': '1318 RV', 'MoE': '2.7', 'Biden (D)': '47', 'Trump(R)': '48', 'Spread': 'Biden +1'}, {'Poll_Name': 'Civitas', 'Date': '2020-04-05', 'Sample_Size': '500 LV', 'MoE': '4.4', 'Biden (D)': '49', 'Trump(R)': '42', 'Spread': 'Trump +7'}]
    

    我将所有字典数据插入到一个数组中,我计划用它执行insertmany()。

    这是我到目前为止以字典格式导出此数据的代码

    def export_Data(filename):
    export_List = [] #list that will contain the dictionary values of the data
    key_List = ["Poll_Name", "Date", "Sample_Size", "MoE", "Biden (D)", "Trump(R)", "Spread"] #list of keys for each value
    count = 0 
    temp_List = []
    with(open(filename, "r")) as infile: #opening the file of raw data
        for line in infile:
            count += 1
            temp_List.append(line.strip("\n")) #i add each line of infile to this temporary list 
            if count % len(key_List) == 0: #when 7 items are added
                temp_dict = {} #create a temporary dictionary 
                for key, line in zip(key_List, temp_List): #fill in dictionary key values..
                    temp_dict[key] = line
                temp_List = [] # resetting the temporary dictionary
                export_List.append(temp_dict) #appending dictionary to final list
    print(export_List)
    #export the list later once i get properly formatted..
    

    现在,您可以看到,在文本文件和字典示例中发现的一些条目被视为“--”,这些条目不支持表示空/null值。 我想将这样的值作为null而不是“--”插入到我的数据库中,以避免在mongo中进行大规模更新查询,我觉得这可能会使数据清理/导出过程更简单、更快。 是否有任何方法可以更改这些值,以便它们可以作为null而不是“--”插入 如果有任何解决方案,我将不胜感激,我知道可能有一个简单的答案!但这位新手希望得到一些澄清。

    0 回复  |  直到 4 年前
        1
  •  1
  •   Joe    4 年前

    您可以在该循环中用您选择的任何值显式替换“--”:

    而不是

            temp_List.append(line.strip("\n")) 
    
            temp_str = line.strip("\n")
            temp_list.append(temp_str if (temp_str != "--") else "")
    

    如果你更愿意使用 null undefined 或“未提供”或其他,只需替换 "" 用你想用的东西。