web-dev-qa-db-ja.com

pymongoでコレクションをドロップする方法は?

scarpyを使用してデータをクロールし、MongoDBでクラウドホスティングmLabに正常に保存します。

私のコレクション名はrecentlyで、データのカウントは5です。 enter image description here

データを再度クロールし、コレクションrecentlyを更新するため、コレクションを削除してから挿入しようとします。

ここに私のコード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
_

しかし、スパイダーを実行すると、コレクションのrecentlyカウントが10であることがわかります(5が必要です) enter image description here

コレクションを削除するコードを探しています。 db。[コレクション名] .drop()と言うだけです

しかし、self.collection.drop()の前にself.collection.insert(dict(item))を試すと、私の場合は機能しません。

誰でも私のコードの何が問題なのか教えてくれますか?

それはありがたいです。前もって感謝します。

11
Morton

drop を使用する必要があります。 fooがコレクションであるとします

db.foo.drop()

または、drop_collectionを使用できます

db.drop_collection(collection_name)
17
Arpit Solanki