我正在开发uisng python和mongoDB的Django应用程序。我正在开发表单,并接受用户输入并保存到数据库。 在插入之前,我要检查数据库是否已经存在数据。
我有一个mongo集合,看起来像下面这样:
coll_1:
{ "_id" : ObjectId("56e0a3a2d59feaa43fba49d5"), "timestamp" : ISODate("2017-11-18T10:23:29.620Z"), "City_list" : "[PN-City1, PN-City2,PN-City3, PN-City4]", "LDE" : "LDE-1234, LDE-345, LDE-456" , "Name": "ABC"}
{ "_id" : ObjectId("56e0a3a2d59feaa43fba49d6"), "timestamp" : ISODate("2016-12-18T10:23:29.620Z"), "City_list" : "[PN-City4, PN-City5,PN-City6,PN- City7]", "LDE" : "LDE-444, LDE-3445, LDE-456", "Name": "BCD"}
{ "_id" : ObjectId("56e0a3a2d59feaa43fd67873"), "timestamp" : ISODate("2016-12-18T10:23:29.620Z"), "City_list" : "[PN-City1, PN-City6,PN-City9,PN- City10]", "LDE" : "LDE-444, LDE-3445, LDE-456", "Name": "XYZ"}
我有一个输入用户名的表格:名称,城市(一个或多个逗号分隔),LDE(逗号分隔)
在我的脚本中,我想在插入到mongodb中之前进行检查 如果该用户是新用户,则直接插入db。 如果是老用户,请检查用户输入的城市是否已存在于db中(如果未更新),否则请向html抛出一条消息,提示消息说城市已存在于数据库中。
说我的输入是这样的:
Name: PQR
City_list : PN-City4, PN-City12
LDE: LDE-6767
我的代码如下:
if 'Name' in pdata and ('city_list' in pdata and re.match("(PN-\w*-\d)(PN-\w*-\d)*", pdata['city_list'])):
user_input = pdata['city_list'].split(",")
pname = pdata['Name']
for data in user_input:
if db.coll_1.find({"Name": pname , 'City_list': { "$in": data}})
这给了我错误。
我该如何实现
我尝试过这样的事情:
for data in user_input:
data = str(data) # it was taking as unicode
if (db.coll_1.find({"Name": pname , 'City_list': { "$in": data}}).count() > 0):
Gives error : OperationFailure: $in needs an array
CIty_list是一个字符串
有人可以帮我吗