scarpy
を使用してデータをクロールし、MongoDBでクラウドホスティングmLab
に正常に保存します。
私のコレクション名はrecently
で、データのカウントは5です。
データを再度クロールし、コレクション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が必要です)
コレクションを削除するコードを探しています。 db。[コレクション名] .drop()と言うだけです
しかし、self.collection.drop()
の前にself.collection.insert(dict(item))
を試すと、私の場合は機能しません。
誰でも私のコードの何が問題なのか教えてくれますか?
それはありがたいです。前もって感謝します。
drop
を使用する必要があります。 foo
がコレクションであるとします
db.foo.drop()
または、drop_collection
を使用できます
db.drop_collection(collection_name)