我的MongoDB
中有一些数据-很多数据。而且我想用pymongo
添加新数据,但不要追加基于phone_number
在数据库中已经存在的数据。我正在使用此代码,但是它只是一个循环,所以它的运行速度很慢……
connected_db = self.main_mongo_terema # Connect to DB
data_to_insert = []
try:
collection = connected_db['terema_data'] # Connect to Collection
except:
self.log("Cant connect to DB")
try:
for dicts_ in data: # list of dicts
for key, val in dicts_.items():
if key == "phone_number":
match = collection.find({}, {"phone_number": val })
for x in match:
if x:
continue
else:
data_to_insert.append(dicts_)
except Exception as e:
self.log(f"Loop problem - {str(e)}")
try:
collection.insert_many(data_to_insert)
# Empty list
except TypeError:
pass
创建唯一索引,这样就不必检查数字是否存在。
通过以下命令创建索引:
collection.createIndex( { "phone_number": 1 }, { unique: true } )
PS:您只需执行一次。之后,数据库中的所有phone_number
将始终是唯一的。
之后,您可以直接插入data
对象。您无需检查该值是否唯一,mongodb将为您处理该值。
collection.insert_many(data)