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" 数组中的元素。
我正在学习 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" 数组中的元素。