MongoDB在插入到DB之前检查集合中的项是否存在列表项

2024-03-29 15:24:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个使用python和mongoDB的django应用程序。我正在开发一个表单,接受用户输入并保存到数据库。 在插入之前,我想检查数据库是否已经存在数据。在

我有一个mongo系列,看起来像下面这样:

第一组:

  { "_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。 如果是老用户,请检查用户输入的城市是否已经存在于数据库中,如果不更新数据库,则向html中抛出一条消息,说明城市已经存在于数据库中。在

假设我的输入是这样的:

^{pr2}$

我的代码如下:

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是一个字符串

有人能帮我吗


Tags: 用户nameinid数据库citydbdata