Python 重复密钥错误集合:mydatabase.customers索引:\u id\u重复密钥

Python 重复密钥错误集合:mydatabase.customers索引:\u id\u重复密钥,python,mongodb,Python,Mongodb,我想检查用户是否存在。如果用户确实存在,请不要插入它 这是我的代码: #!/usr/bin/env python # Python code to illustrate # inserting data in MongoDB from pymongo import MongoClient try: myclient = MongoClient('10.1.3.18',27017) print("Connected successfully!!!") except: p

我想检查用户是否存在。如果用户确实存在,请不要插入它

这是我的代码:

#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()
    if record['name']!="Mr.Shaurya":
        x = mycol.insert_one(a[0])
        print(record)
pymongo.errors.DuplicateKeyError: E11000 duplicate key error collection: 
mydatabase.customers index: _id_ dup key: { :ObjectId('5d7b9a6bc9a8569a44a6da2c') }
#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()

    for i in a:
         if record['eid'] != i['eid']:
              x = mycol.insert_one(a[0])
              print(record)
#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()

    for i in a:
         if record['name'] != i['name']:
              x = mycol.insert_one(a[0])
              print(record)
这个代码正确吗?还是有其他解决办法

如果我运行代码两次,就会出现以下错误:

#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()
    if record['name']!="Mr.Shaurya":
        x = mycol.insert_one(a[0])
        print(record)
pymongo.errors.DuplicateKeyError: E11000 duplicate key error collection: 
mydatabase.customers index: _id_ dup key: { :ObjectId('5d7b9a6bc9a8569a44a6da2c') }
#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()

    for i in a:
         if record['eid'] != i['eid']:
              x = mycol.insert_one(a[0])
              print(record)
#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()

    for i in a:
         if record['name'] != i['name']:
              x = mycol.insert_one(a[0])
              print(record)
MongoDB中如何防止重复密钥?
如何使用索引?

假设
eid
是导致重复键错误的主键列,下面的代码应该可以解决您的问题

当您在
游标
中循环时,您还希望在数组
a
中循环,并查看a中的
eid
是否也存在于数据库
游标
中。如果不存在,则将使用
x=mycl.insert\u one(a[0])

代码:

#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()
    if record['name']!="Mr.Shaurya":
        x = mycol.insert_one(a[0])
        print(record)
pymongo.errors.DuplicateKeyError: E11000 duplicate key error collection: 
mydatabase.customers index: _id_ dup key: { :ObjectId('5d7b9a6bc9a8569a44a6da2c') }
#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()

    for i in a:
         if record['eid'] != i['eid']:
              x = mycol.insert_one(a[0])
              print(record)
#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()

    for i in a:
         if record['name'] != i['name']:
              x = mycol.insert_one(a[0])
              print(record)
如果要严格检查
customers
表中的用户名,可以使用以下查询

代码:

#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()
    if record['name']!="Mr.Shaurya":
        x = mycol.insert_one(a[0])
        print(record)
pymongo.errors.DuplicateKeyError: E11000 duplicate key error collection: 
mydatabase.customers index: _id_ dup key: { :ObjectId('5d7b9a6bc9a8569a44a6da2c') }
#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()

    for i in a:
         if record['eid'] != i['eid']:
              x = mycol.insert_one(a[0])
              print(record)
#!/usr/bin/env python
# Python code to illustrate
# inserting data in MongoDB
from pymongo import MongoClient

try:
    myclient  = MongoClient('10.1.3.18',27017)
    print("Connected successfully!!!")
except:
    print("Could not connect to MongoDB")

# database
emp_rec1 = {
        "name":"Mr.Geek1",
        "eid":24,
        "location":"delhi"
        }
emp_rec2 = {
        "name":"Mr.Shaurya",
        "eid":14,
        "location":"delhi"
        }

emp_rec3 = {
        "name":"Mr.Shaurya111",
        "eid":141111,
        "location":"delhi111111"
        }
a=[emp_rec1,emp_rec2,emp_rec3]
mydb = myclient["mydatabase"]
#result = mydb.profiles.create_index([('user_id'],unique=True)
mycol = mydb["customers"]

#x = mycol.insert_one(a[2])
cursor = mycol.find()
for record in cursor:
    print(record)
    mydb.servers.getIndexes()

    for i in a:
         if record['name'] != i['name']:
              x = mycol.insert_one(a[0])
              print(record)

您是否有使用mydb.servers.getIndexes()的
SQLInsert