python 代码中建立mongdob 索引

      def process_item(self, item, spider):
            print('打印的文件地址和名字为')
    
            print(item['file_url'], item['name'])
    
            key_word = {"file_url":item['file_url'] , "name": item['name']}
            res = self.db.find(key_word)
    
            if list(res):
    
                print('数据量重复')
    
                raise DropItem("Duplicate item found: %s" % item)
            else:
                print('*****************************插入数据进入数据库**************************************************')
    
                self.db.insert({"file_url": item['file_url'], "name": item['name']})
    
                return item

朋友说我这样查找很慢,让我建立索引?是_id索引吗?

阅读 2.7k
3 个回答

慢在你每次收到一个item是先从数据库里查询是否存在,再选择是否插入.
一条数据你要进行一次类似mysql的"全表扫描",很不划算.

你需要保证查询的速度,或者换一个去重的方式.
如果你的数据小于一万条,操作也无所谓.

加索引是对MongoDB的某个collection的某个查询字段(经常使用的字段)加索引,和Python代码没关系的,所以标题就错了

建议你了解一下数据库基础知识,简单的说索引可以成倍加速查询,特别是数据量大的时候。其中的原理并不是很简单地能解释清楚,但是作为程序员的基本修养应该要去了解。搜索一下“数据库索引原理”,查找相应的文章读一读。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题