web-dev-qa-db-fra.com

Comment déposer une collection avec pymongo?

J'utilise scarpy pour explorer les données et les enregistrer sur l'hébergement cloud mLab avec succès avec MongoDB.

Le nom de ma collection est recently et le nombre de données est 5. enter image description here

Je veux à nouveau analyser les données et mettre à jour ma collection recently, donc j'essaie de supprimer la collection puis de l'insérer.

Voici mon code pipelines.py:

from pymongo import MongoClient
from scrapy.conf import settings

class MongoDBPipeline(object):

    def __init__(self):
        connection = MongoClient(
            settings['MONGODB_SERVER'],
            settings['MONGODB_PORT'])
        db = connection[settings['MONGODB_DB']]
        # here is my collection name recently setting
        self.collection = db[settings['MONGODB_COLLECTION']]

    def process_item(self, item, spider):
        # try to drop my collection recently
        self.collection.drop()
        self.collection.insert(dict(item))
        return item

Mais quand je lance mon araignée, je vois que ma collection recently compte est 10 (Il devrait être 5 c'est ce que je veux) enter image description here

Je cherche du code pour supprimer la collection. C'est juste dire db. [Nom de la collection] .drop ()

Mais ça ne marche pas dans mon cas quand j'essaie self.collection.drop() avant self.collection.insert(dict(item))

N'importe qui peut me donner quelques suggestions Qu'est-ce qui ne va pas avec mon code?

Ce serait apprécié. Merci d'avance.

11
Morton

Vous devez utiliser drop . Supposons que foo est une collection

db.foo.drop()

Ou vous pouvez utiliser drop_collection

db.drop_collection(collection_name)
17
Arpit Solanki