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