Yjfox.github.io

Jun Yin's Personal Blog

Follow me onGitHub

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

blog comments powered by Disqus