今天我们就来说说两个技巧。MongoDB中如何更新一个数组我们知道,如果我们想在MongoDB中给文档添加一个字段,可以使用update_one方法:importpymongohandler=pymongo.MongoClient().db.colhandler.update_one({'name':'kingname'},{'$set':{'newfieldname':'newfieldvalue'}})但是如果一个字段是一个数组,我想向这个数组添加一个元素。另外,如果该元素之前已经在数组中,什么也不做,只有在它之前不存在时才添加它。这时候我们可以使用$addToSet操作符来实现这个功能。这个操作符的语法是:handler.update_one({'name':'kingname'},{'$addToSet':{'fieldname':'elementtobeinserted'}})我们来看一个例子。例如对于一个文档如图:执行代码:handler.update_one({'name':'kingname'},{'$addToSet':{'excellent':'JavaScript'}})运行后,数组excellent变成如下图所示:如果插入一条已经存在的数据,数组不会发生变化。例如:handler.update_one({'name':'kingname'},{'$addToSet':{'excellent':'Python'}})如何使用参数给Scrapy爬虫添加属性在Scrapy项目中,我们有时需要在启动爬虫的时候,传入一些参数,让一段代码执行不同的逻辑。这时候就有一个很方便的方法,就是使用-a参数。它的语法是:scrapycrawl爬虫名称-a参数1-a参数2-a参数3那么,在爬虫中传入的这些参数如何使用呢?其实很简单,你不需要做任何额外的配置,直接在爬虫中,通过self调用即可。参数名称。例如下面的爬虫:可以看到,PyCharm给self.body_name和self.age_from_cmdline这两个属性设置了黄色背景,因为PyCharm找不到这两个属性的定义位置。不过没关系,我们在启动Scrapy爬虫的时候,只需要使用-a参数传入:scrapycrawlexample-abody_name=kingname-aage_from_cmdline=28运行效果如下图所示:可以看到,这个界面成功接收到这两个参数,并显示出来。本文转载自微信公众号“闻所未闻的密码”,可通过以下二维码关注。转载本文请联系Code公众号。
