在Python pymongo mongodb中动态添加列表作为嵌入文档

时间:2015-02-01 21:12:02

标签: python mongodb pymongo

假设这代表了我需要插入的复杂文档:

customer = {
  'first_name' : 'Arnold',
  'last_name' :  'Pettibone',

  'addresses': [
    'home' : {
      'street' : '1234 fake street',
      'city' :   'Anytown',
      'state' :  'OH',
      'zip' :    '12345'
    },
    'work' : {
      'street' : '742 Evergreen Terrace',
      'city' :   'Springfield',
      'state' :  'OH',
      'zip':     '12345'
    }
  ]

}

我在字符串变量中有first_namelast_name。我有2维列表中的地址 - 许多地址,每个地址有4个字段。

如何在Python中将列表动态附加到客户文档?

这是一些错误的伪代码。我是Python和MongoDB的新手,所以我确信我有一些基本的Python可以解决这个问题。

 customer = {
      'first_name' : 'Arnold',
      'last_name' :  'Pettibone',
    }
      'addresses': [
    for item in address_list:
    {
          'street' : item[0],
          'city' :   item[1],
          'state' :  item[2],
          'zip' :    item[3]
        }
      ]
 }

1 个答案:

答案 0 :(得分:2)

如果您的初始设置是这样的:

>>> first_name = 'Arnold'
>>> last_name = 'Pettibone'
>>> addresses = [['1234 fake street', 'Anytown', 'OH', '12345'],]
>>> addresses = [['1234 fake street', 'Anytown', 'OH', '12345'],
...     ['742 Evergreen Terrace', 'Springfield', 'OH', '12345']]
...     

然后你可以建立一个"客户" dict如:

>>> customer = {
...     'first_name': first_name,
...     'last_name': last_name,
...     'addresses': [{
...         'street' : item[0],
...         'city' :   item[1],
...         'state' :  item[2],
...         'zip' :    item[3]
...      } for item in addresses]}
...

结果是这样的:

>>> import pprint
>>> pprint.pprint(customer)
{'addresses': [{'city': 'Anytown',
                'state': 'OH',
                'street': '1234 fake street',
                'zip': '12345'},
               {'city': 'Springfield',
                'state': 'OH',
                'street': '742 Evergreen Terrace',
                'zip': '12345'}],
 'first_name': 'Arnold',
 'last_name': 'Pettibone'}