pymongo操作

 安装mongoDB:直接下载安装,软件会自动配置,安装后查看服务中有mongoDB即可。

安装pymongo:pip install pymongo

 连接本地客户端:

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

连接/创建数据库:

mydb = myclient["industrial"]

连接/创建集合(相当于sql中的表):

mycol=mydb['MA']

注意:必须存入数据,集合才会被创建;

表名不能有'.',第一个字符不能是数字。

存入数据:

district_futian={'城市':'深圳','行政区':'福田'}
district_list=[district_futian,district_nanshan,district_baoan]

mycol.insert_many(district_list)
mycol.insert_one(district_futian)

不要用insert。

mongo会自动给每一条数据添加一个_id

添加新数据会自动放到集合的末尾

读取最好设置_id为False,因为_id的值不是字符串,直接使用会出错。 

 

查询:

超时:cursor默认有效时间为10分钟,超时会废弃,出现CursorNotFound error,可以设置为不限时。

cursor=mycol.find({},fields,no_cursor_timeout=True, batch_size=5)

排序(1为升序,-1为降序):

mycol.find({},fields).sort([('date',1)]):

 取得的数据就是已经排好序的。

单个数据排序(用来取最近或最早的一条数据):

last=mycol.find_one(sort=[('date',-1)])
last=mycol.find_one(sort=[('_id',-1)])

-1就是降序,取最近的一条数据。

一般可以用_id排序,因为_id本身就有顺序

跳过前面的100条数据:

mycol.find({},fields).skip(100):

 限制取前面的100条数据:

mycol.find({},fields).limit(100):

sort、skip、limit一起使用,优先级:sort>skip>limit

条件查询:

查询匹配的数据:

query={'code':'600000'}
mycol.find(query,fields)

注意find只接受两个参数,否则出错:TypeError: skip must be an instance of int

查询指令包含逻辑指令:

query={
       '$and':[{'code':'600000'},{'date':'2020-01-01'}],
       '$or':[{'code':'600000'},{'code':'600001'}])
      }
mycol.find(query,fields)

如果接收的条件是列表,可以用map函数构造表达式:

code_range=['300302','300770']
query={
       '$or':list(map(lambda x:{'code':x},code_range))
       }

更新:

增加字段:mycol.update({"_id":1},{"$set":{"new_field":0}})

删除字段:mycol.update({"_id":1},{"$unset":{"new_field":1}}) 

_id似乎可以提取时间信息。

 

上一篇:No migrations to apply报错解决方案


下一篇:APP测试基本流程