result = t_calender.find( {'cal_date': {'$gte': pre_base_date.strftime('%Y%m%d'), '$lte': base_date.strftime('%Y%m%d')}}).sort('cal_date', pymongo.DESCENDING) for value in result: if value['is_open']: return datetime.datetime.strptime(value['cal_date'], '%Y%m%d') print('Warning: xx')
b. 查询限定操作(也就是sql中的 where 语句) i. myColl.find({'name':'liming'}) 查询集合中 字段 name = liming的记录 1) 注意:括号内部是一个 字典,或者 json格式的数据(其实都一个卵样) 2) 字典 key = 集合内文档的字段,value = 字段的值 3) 相当于sql中: select * from myColl where name = 'liming' ii. 一些高级操作: 1) 比较操作: a) 小于比较: i) myColl.find({'age':{'$lt':30}} ii) 查询age字段值 小于30的所有文档记录 iii) 注意:括号内是一个 字典 iv) 字典 key = 文档字段,value 是一个字典,其中 key = 比较操作符, value =比较值 v) 相当于sql中: select * from myColl where age < 30 b) 其他比较操作符 $gt 大于 $gte 大于等于 $lt 小于 $lte 小于等于 $ne 不等于 2) 组合查询: a) 逻辑与 and i) myColl.find({'name':'liming','age':30}) ii) 查询 name = liming 和 age = 30 的所有文档记录 iii) 注意:括号内是一个字典,两个元素。用 逗号分隔开,key = 字段,value=字段值 iv) 相当于sql: select * from myColl where name = 'liming'and age = 30 b) 逻辑或 or i) myColl.find({'$or':[{'name':'liming'},{'age':30}]}) ii) 查询name = 'liming' 或 age = 30的所有文档记录 iii) 注意:括号内是一个字典,key = '$or' 逻辑或操作符,value = 一个列表 列表内是两个字典,key = 字段,value=字段值 iv) 相当于sql: select * from myColl where name = 'liming'or age = 30 3) 对查询结果进行排序: a) myColl.find().sort('name',pymongo.DESCENDING) i) 对查询结果按照字段 name进行排序,默认为升序,可以指定排序方向, DESCENDING是降序 ii) 相当于sql: select * from myColl order by name DESC b) myColl.find().sort([{'name':pymongo.DESEDING',{'age':pymongo.DESEDING'}]) i) 对查询结果排序,指定排序方向为 降序,默认为升序。 先按照name字段排序,在按照age字段排序 ii) 相当于sql: select * from myColl order by name DESC ,age DESC DESC关键字只适用于 DESC前面的字段,需要的话,可以对每个字段指定一次 DESC