首页 > 其他 > 详细

pymongo操作

时间:2021-04-18 11:08:27      阅读:22      评论:0      收藏:0      [点我收藏+]

 安装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似乎可以提取时间信息。

 

pymongo操作

原文:https://www.cnblogs.com/moneymaster/p/14629509.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!