Mongodb 正则表达式帮助

Mongodb regex assistance

我正在学习 python mongodb。

我的输入数据是:

{'Period': '12-2015',
 'data': [{'EndDate': '10-12-2015',
           'Pid': '566bb17761be0b1e0059c09d',
           'Registration': 'TN 64 KS 7777',
           'StartDate': '5-12-2015',
           'Status': 'Booked'},
          {'EndDate': '20-12-2015',
           'Pid': '566bb17761be0b1e0059c09d',
           'Registration': 'TN 64 KS 7777',
           'StartDate': '15-12-2015',
           'Status': 'NA'},
          {'EndDate': '24-12-2015',
           'Pid': '566bb17761be0b1e0059c09d',
           'Registration': 'TN 64 KS 7777',
           'StartDate': '21-12-2015',
           'Status': 'AOs'},
          {'EndDate': '30-12-2015',
           'Pid': '566bb17761be0b1e0059c09d',
           'Registration': 'TN 64 KS 7777',
           'StartDate': '25-12-2015',
           'Status': 'AOr'}]}

我正在尝试像这样更新 table:

for values in data:
    yield db.calender.update({"StartDate": values['StartDate']}, values)

我也试过了

for values in data:
    yield db.calender.update({"StartDate": values['StartDate']}, 
                             {"StartDate": values['StartDate'],
                              "EndDate": values['EndDate'],
                              "Status": values['Status'],
                              "Registration": values['Registration'],
                              "Pid": values['Pid']})

基于此文档from mongodb

但日历中的数据未更新 table。

您不能使用 update 方法,因为您的集合是空的,除非您将 upsert 设置为 True,但这仍然没有任何意义。您需要使用 insert_many 方法。

input_data = {'Period': '12-2015',
 'data': [{'EndDate': '10-12-2015',
           'Pid': '566bb17761be0b1e0059c09d',
           'Registration': 'TN 64 KS 7777',
           'StartDate': '5-12-2015',
           'Status': 'Booked'},
          {'EndDate': '20-12-2015',
           'Pid': '566bb17761be0b1e0059c09d',
           'Registration': 'TN 64 KS 7777',
           'StartDate': '15-12-2015',
           'Status': 'NA'},
          {'EndDate': '24-12-2015',
           'Pid': '566bb17761be0b1e0059c09d',
           'Registration': 'TN 64 KS 7777',
           'StartDate': '21-12-2015',
           'Status': 'AOs'},
          {'EndDate': '30-12-2015',
           'Pid': '566bb17761be0b1e0059c09d',
           'Registration': 'TN 64 KS 7777',
           'StartDate': '25-12-2015',
           'Status': 'AOr'}]}

data = input_data['data']
yield db.calender.insert_many(data)

如您所见,您不需要遍历 "data" 数组中的元素。