首页 > 代码库 > python操作mongodb

python操作mongodb

出于对mysql的天然不信任(不了解),准备尝试些新东东,redis是内存数据库有些了解,这回试试更有存储感觉的mongodb

 

from pymongo import Connection

con = Connection()

connection = pymongo.Connection(‘localhost‘, 27017)

 

db = con.test # 数据库名为test

posts = db.post

 

2     >>> post1 = {"title":"I Love Python",
 3          "slug":"i-love-python",
 4          "author":"SErHo",
 5          "content":"I LovePython....",
 6          "tags":["Love","Python"],
 7          "time":datetime.datetime.now()}

 

一条记录就是一个 {} dic, 内有各种key, 对应value可以是函数值

 

posts.insert(post1)

 

把记录存入数据库

 

post = posts.find ()

查找所有记录

 

post.count()

得到所有记录数

posts.find_one({"slug":"python-mongodb"})

 

查找一条记录

 

posts.update({"_id":post["_id"]},post)

 

更新一条记录post

 

1     >>> posts.update({"_id":post["_id"]},{"$set":
2                    {"content":"TestUpdate SET...."}})

 

 

用 $set 更新一条记录里的一个key-value对中的value

 

>>> posts.update({"_id":post["_id"]},{"$inc":  {"views":1}})

 

$inc 给 记录中的views对应值加1, 如果没有views这个key 就创建,并赋值 1?

 

>>> posts.update({"_id":post["_id"]},{"$push":{"tags":"Test"}})

 

给数组类型的值append一个值

 

2     >>> posts.update({"_id":post["_id"]},{"$addToSet":
3                           {"tags":{"$each":["Python","Each"]}}})

 

给数组类型的值append一系列值,同时确保不会有重复值

 

1       >>> posts.update({"_id":post["_id"]},{"$pop":{"tags":1}})

 

将数组类型的值pop出末尾的一个值,如果是{"$pop":{"tags":-1}}则pop出第一个

 

可以使用”$pull”来删除数组中指定的值,它会删除数组中所有匹配的值。如何修改其中的一个值呢?可以先删除掉,再增加一个进去,还有就是直接定位修改。比如tags数组中,”Python”是第一个,想把它改成”python”,可以通过下标直接选择,就是tags[0],然后使用上面 的”$set”等修改器,如果不确定可以使用$来定位:

1     >>> posts.update({"tags":"MongoDB"},{"$set":{"tags.$":"Hello"}})

这个将先搜索tags中满足”MongoDB”的,如果找到,就把它修改为”Hello”。可以看到上面的update这个函数已经有两个参数了, 它还有第3个参数upsert,如果设为”True”,则如果没有找到匹配的文档,就会在匹配的基础上新建一个文档,具体实例就不讲了。

 

批量插入

 

new_posts =[{"name":"a.payment.FakeInst.a","family":"FakeInst", "category":"恶意扣费", "behavior":"后台发送扣费短信"},{"name":"a.payment.Umeng.a","family":"Umeng", "category":"恶意扣费", "behavior":"1. 后台从服务器端获取指令, 自动发送短信,订制扣费服务,并拦截指定号码短信。 2. 后台从服务器端获取指令,自动模拟访问广告,消耗用户流量"}]

malinfo.insert(new_posts)


Out[13]: [ObjectId(‘527281323387e31671aa91b2‘),ObjectId(‘527281323387e31671aa91b3‘)]

 

python操作mongodb