
3.4 MongoDB数据库查询
基于3.3节的结果,查询北京的天气预报数据,代码如下。

代码运行结果如图3-21所示。
查询的语法是sheet_weather.find(),其中sheet_weather代表weather数据库中的表格sheet_weather_3。
接下来查询最低气温大于5摄氏度的城市名称,代码如下。

图3-21

代码运行结果如图3-22所示。
由于这里目标是提取最低气温大于5摄氏度的城市名称,因此先将最低气温设置成整型数据。更新数据用sheet_weather.update_one(),其中update_one()方法用于指定更新一条数据,代码如下。

这里第一个参数是{'_id':item['_id']},表示要更新的查询条件,对应_id字段。第二个参数表示要更新的信息,$set是MongoDB中的一个修改器,用于指定一个键并更新键值,若键不存在,则创建一个键。

图3-22
除此之外,常用的修改器还有$inc、$unset、$push等。
● $inc修改器:可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减操作。
● $unset修改器:用于删除键。
● $push修改器:向文档的某个数组类型的键添加一个数组元素,不过滤重复的数据。在添加时,若键存在,则要求键值类型必须是数组;若键不存在,则创建数组类型的键。
{'$set':{'**********.0.daily_forecast.{}.tmp.min'.format(i):int(tmp)}}是将**********.0.daily_
forecast.{}.tmp.min路径下的数据设置为int(整型),路径中间的{}中的数据由路径后的.format(i)指定,其内容就是format中的i变量。
下面是一些延伸内容。
可以将3.2节中的URL部分:

写成:

数据更新完毕后,再用find()方法查找数据,其中$gt表示符号>。

$lt、$lte、$gt和$gte分别表示符号<、、>和 。