Scrapy сохранить дубликаты документов в mongodb [pymongo], как предотвратить дублирование документов - PullRequest
0 голосов
/ 30 октября 2019

паук был в порядке, но теперь внезапно он вставляет дубликаты документов

#Pipeline
import pymongo


class BucketPipeline(object):
    def __init__(self):
        self.conn = pymongo.MongoClient(
            'localhost',
            27017
        )
        db = self.conn['buc']
        self.collection = db['product']

    def process_item(self, item, spider):
        self.collection.insert(dict(item))
        return item

паук

функция паука здесь

1 Ответ

1 голос
/ 30 октября 2019

Чтобы избежать дублирования, вам нужно найти уникальный идентификатор для каждого элемента, который часто уже присутствует на веб-странице или данных JSON, которые вы просканировали.

Затем для каждого элемента вы можете назначить _id поле со значением найденного вами идентификатора, поскольку MongoDB использует его в качестве первичного ключа.

https://docs.mongodb.com/manual/core/document/index.html

Также возможно создать уникальный индекс в MongoDB для имени ключа идентификатора.

https://docs.mongodb.com/manual/core/index-unique/#index-type-unique

...