سلام
در جلسه ی مربوط به ذخیره لینکهای اگهی در دیتابیس استاد متد زیر رو برای ذخیره کردن لینکها نوشتن
def store(self, data, collection_name):
collection = getattr(self.mongo.database, collection_name)
if isinstance(data, list) and len(data) > 1:
collection.insert_many(data)
else:
collection.insert_one(data)
حالا سوال من اینه
وقتی ما هر بار برنامه رو اجرا میکنیم این متد همه ی لینکها رو داخل دیتابیس ذخیره میکنه
حتی لینک هایی که قبلا هم ذخیره کرده
چطوری میشه جلوی این کار رو گرفت؟
البته من خودم یه یکم این متد رو تغییر دادم و تونستم جلوی ذخیره لینکهای تکراری رو بگیرم
اما نمیدونم کاری که کردم بهینه هست یا نه؟
def store(self, data, collection_name):
collection = getattr(self.mongo.database, collection_name)
collection.create_index('url', unique=True)
if isinstance(data, list) and len(data) >= 1:
for record in data:
try:
collection.insert_one(record)
except pymongo.errors.DuplicateKeyError:
print(f'This key {record["url"]} exits in database.')
continue
ممنون میشم راهنمایی ام کنید.
data = [
{'_id': ObjectId(), 'url': 'url_1', 'flag': False},
{'_id': ObjectId(), 'url': 'url_2', 'flag': False},
{'_id': ObjectId(), 'url': 'url_3', 'flag': False},
...
]