python与mongoDB的交互
A tiny brief introduce how to pass array object (such as objective[] name = new objective[number]) as a parameter
mongoDB提供有针对python的API,当然也有java,C#等等,但python简洁的语法是选择的原因.
官方指南:mongoDB.org 上的manual相当详细
- mongodb insert data 格式要求变态,在field中插入array document:
users.insert({"_id":listid,"movie":[{"movieId":movieId,"rate":rate}]})
- 更新原field:
$push,$addtoset 效果类似,不同在于$addToSet不会重复添加已存在的相同数据 $push 语法:
users.update({"_id":listid},{"$push":{"movie":{"movieId":movieId,"rate":rate,"time":list['time']}}})
- 抓取mongodb查询后数据:
用一个循环遍历所有查询结果
result=users.find({"_id":userId},{"movie":{"$elemMatch":{"movieId":movieId}}})
for info in result:
info['movie'][0]['rate'] #这样只能抓取第一个array的rate
for i in info["movie"]: # 在“movie” field遍历,由于movie是array,所以遍历是必须的
i['rate'] # 数据可以随便抓取了。
- 查询:find()
mongoDB查询返回数据已经是type 'dict', 之前纠结了一整天在这茬儿上,还import json,试图走远路用json来转换成dict,悲哀!
if 'movie' in s.keys()
即可确定s list里是否存在'movie' key
- python 是神器,pip 任何module都是分分钟的事难怪Google也喜欢。
- mongodb太灵活,语法繁杂,但是也特强大,数据。noSQL的小型典范。
end. Sep 29th,2013