繁体   English   中英

将字典列表插入mongodb并删除int键

[英]Inserting list of dictionaries into mongodb and removing int keys

我必须插入一个具有这种语法的字典列表(我有超过6500个像这样的3个字符串):

0: {208271891: {'bra': 'Solarmax',
             'bri': 4,
             'eur': 95.4,
             'max': 1980,
             'nam': '2000S',
             'pan': {'bra': 'Sanyo',
                     'bri': 3,
                     'eff': 16,
                     'h': 861,
                     'hea': 50,
                     'mni': 1,
                     'mnm': 'free standing',
                     'n': 7,
                     'nam': 'HDE1 230',
                     'slo': 35,
                     't': -0.3,
                     'w': 1610,
                     'wp': 230},
             'pha': 1,
             'rat': 0.81,
             'wp': 1610}},

1: {208271900: {'bra': 'Solarmax',
             'bri': 4,
             'eur': 95.4,
             'max': 1980,
             'nam': '2000S',
             'pan': {'bra': 'Sanyo',
                     'bri': 3,
                     'eff': 16,
                     'h': 861,
                     'hea': -40,
                     'mni': 1,
                     'mnm': 'free standing',
                     'n': 9,
                     'nam': 'HDE1 230',
                     'slo': 30,
                     't': -0.3,
                     'w': 1610,
                     'wp': 230},
             'pha': 1,
             'rat': 1.05,
             'wp': 2070}},

 2: {208271892: {'bra': 'Solarmax',
             'bri': 4,
             'eur': 95.4,
             'max': 1980,
             'nam': '2000S',
             'pan': {'bra': 'Sanyo',
                     'bri': 3,
                     'eff': 16,
                     'h': 861,
                     'hea': 50,
                     'mni': 1,
                     'mnm': 'free standing',
                     'n': 9,
                     'nam': 'HDE1 230',
                     'slo': 30,
                     't': -0.3,
                     'w': 1610,
                     'wp': 230},
             'pha': 1,
             'rat': 1.05,
             'wp': 2070}}

我试图用dict.pop()和'del'删除键但是得到了这个错误:'TypeError:'int'对象不支持删除项目'。

slMetadata = {}    

for row in metadatas: #metadatas coming from mysql

   mid = int(row['met_id'])
   slMetadata.update(mid = mid)

   bsInv = {
          mid: 
             {
             'wp' : wp,
             'bra': str(row['invbraname']),
             'bri': int(row['inm_bra_id']),
             'nam': str(row['inm_name']),
             'pha': int(row['inm_phases']),
             'max': int(row['inm_maximal_power']),
             'eur': float(row['inm_euro_efficiency']),
             'pan':
                  {
                  'n'  : int(row['inv_pan_numbers']),
                  'hea': int(row['inv_pan_heading']),
                  'slo': int(row['inv_pan_slope']),
                  'mni': int(row['inv_mnt_id']),
                  'mnm': str(row['mnt_name']),
                  'bra': str(row['panbraname']),
                  'bri': int(row['pan_bra_id']),
                  'nam': str(row['pan_name']),
                  'wp' : int(row['pan_wc']),
                  'eff': int(row['efficiency']),
                  't'  : float(row['coefficient_p']),
                  'w'  : int(row['pan_width']),
                  'h'  : int(row['pan_height'])
                  }
             }         
        }
i = 0
dictToInsert = {}
for dic in slMetadata:
    dictToInsert[i] = slMetadata[dic]
    i += 1

if len(dictToInsert) > 0:
   insertion = dbCollection.insert_many(dictToInsert)

我想要的是将所有这些dicts插入mongoDb但我有以下错误:bson.errors.InvalidDocument:文件必须只有字符串键,键为0。

我完全理解并知道我无法使用'int'键插入mongoDb。 但是替代方案是什么?

谢谢。

尝试

dictToInsert[str(i)] = slMetadata[dic]

代替

dictToInsert[i] = slMetadata[dic]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM