欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

PyMongo笔记

程序员文章站 2022-05-19 09:13:28
...

安装 $ pip install pymongo//指定pymongo版本$ pip install pymongo==2.1.1//upgrade现有的版本$ pip install --upgrade pymongo 使用 from pymongo import MongoClientconnection = MongoClient()#指定host和portconnection = MongoClient('localhost', 27

安装

$ pip install pymongo
//指定pymongo版本
$ pip install pymongo==2.1.1
//upgrade现有的版本
$ pip install --upgrade pymongo

使用

from pymongo import MongoClient
connection = MongoClient()
#指定host和port
connection = MongoClient('localhost', 27017)
db = connection.test_database

插入

>>> import datetime
>>> post = {"author": "Mike",
...         "text": "My first blog post!",
...         "tags": ["mongodb", "python", "pymongo"],
...         "date": datetime.datetime.utcnow()}
>>> posts = db.posts
>>> post_id = posts.insert(post)
>>> post_id
ObjectId('...')
#多个插入
>>> new_posts = [{"author": "Mike",
...               "text": "Another post!",
...               "tags": ["bulk", "insert"],
...               "date": datetime.datetime(2009, 11, 12, 11, 14)},
...              {"author": "Eliot",
...               "title": "MongoDB is fun",
...               "text": "and pretty easy too!",
...               "date": datetime.datetime(2009, 11, 10, 10, 45)}]
>>> posts.insert(new_posts)
[ObjectId('...'), ObjectId('...')]

查找

>>>posts.find_one({"author": "Mike"})
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']}
#若不存在则没有返回值
#按id查找
>>>posts.find_one({"_id": post_id})
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']}
#注意post_id为ObjectId类型而不是string, 如果是string则会找不到
#所以当从请求的url中获取id后必须把string类型转换成ObjectId类型再使用
from bson.objectid import ObjectId
# The web framework gets post_id from the URL and passes it as a string
def get(post_id):
    # Convert from string to ObjectId:
    document = connection.db.collection.find_one({'_id': ObjectId(post_id)})

count

>>> posts.count()
3
>>> posts.find({"author": "Mike"}).count()
2

sort和limit

#-1为倒序
db.posts.find().sort({'author':-1}).limit(10)

update

db.posts.update({"_id": post_id}, {"$set": {"author":"Mark"}})