Pymongo库简单应用(Python的mongodb库)

3 篇文章 0 订阅

Pymongo库简单应用

Pymongo库是Python操作mongodb的库。下面简单介绍Pymongo的简单使用。

创建mongo客户端选择数据库和集合并插入数据

import pymongo

client = pymongo.MongoClient(host,port)
#client = pymongo.MongoClient('mongodb://localhost:27017/')

db = client.db #选择名称叫db的数据库,没有会创建
#或者db = client['db']

collection = db.test #选择test名的collection,没有会创建
#或者collection = db['test']

#collection 可以对集合进行操作
collection.insert({'name':'aaa'}} #返回插入id
collection.insert([{'name':'aaa'},{'name':'bbb'}])#返回插入id的list
e = collection.insert_one({'name':'ccc'})#返回结果通过e.inserted_id查看插入id

obj =  {'a':'b'}
collection.insert_one(obj)
#插入成功后obj会多一个属性_id
print(obj) #{'_id': ObjectId('58cf7eaac43b3761209924be'), 'a': 'b'}
#insert也会产生相同的效果,会把插入的元素多添加一个_id属性来表示插入数据库后的id

连接带认证的mongo

上述连接可以连接不设置密码的mongo,但是mongo带密码就需要其他的连接方式了。

#SCRAM-SHA-1方式
uri = "mongodb://user:password@example.com/the_database?authMechanism=SCRAM-SHA-1"
client = MongoClient(uri)

#或者
client = MongoClient('example.com')
client.the_database.authenticate('user', 'password', mechanism='SCRAM-SHA-1')

#MONGODB-CR 方式
from pymongo import MongoClient
uri = "mongodb://user:password@example.com/the_database?authMechanism=MONGODB-CR"
client = MongoClient(uri)

#或者
client = MongoClient('example.com')
client.the_database.authenticate('user', 'password', mechanism='MONGODB-CR')

#或者使用默认加密方式
uri = "mongodb://user:password@example.com/the_database"
client = MongoClient(uri)

查询数据

a = collection.find({'name':'aaa'}) #返回游标,可以for迭代或者a.next()获取
a = collection.find_one({'name':'aaa'})#返回结果
'''
{'_id':ObjectId('58b92cdfc43b3735664597be'), 'name':'aaa'}
'''
#如果id是字符串类型的
from bson.objectid import ObjectId #导入ObjectId把字符串id转换成ObjectId才能查找
collection.find_one({'_id':ObjectId('58b93904c43b3735664597c2')})
#直接使用字符串id是无法查询到内容的

#查看数据条数
collection.count()
#或者 collection.find().count()
collection.find({"name": "aaa"}).count()

#条件查询和排序
d = datetime.datetime(2009, 11, 12, 12)
collection.find({"date": {"$lt": d}}).sort("author")
#限制查询条数和指定位置开始查询
collection.find({"date": {"$lt": d}}).skip(1)#跳过符合条件的前一条,返回后面的
collection.find(...).limit(5)#查询5条结果
collection.find(...).skip(5).limit(5)#跳过前5条返回后面的5条
#排序
collection.find(...).sort('username',pymongo.DESCENDING)#使用username排序DESCENDING为倒序,ASCENDING正序,(ASCENDING=1,DESCENDING=-1)
#多条件排序
collection.find(...).sort(('username',pymongo.DESCENDING),('id',pymongo.ASCENDING))

更新

import pymongo
client = pymongo.MongClient('127.0.0.1')
db = client.test
collection = db.user
collection.update({'a':'b'}, {'$set':{'a':'b'}});#update(条件,{'$set':更新值})

删除

result = collection.delete_many({'a':'b'})#delete_many(条件)
result.delete_count  #删除个数
result = collection.delete_one({'a':'b'})#delete_one(条件)
result.delete_count  #删除个数

创建索引

创建索引可以加快查询

collection.create_index([('user_id',pymongo.ASCENDING),] ,unique=True)
#创建一个唯一的不可重复的索引user_id,一次可以创建多个索引

参考官方文档
http://api.mongodb.com/python/current/tutorial.html

注:
使用ORM访问mongo使用mongoengine包
文档 http://docs.mongoengine.org

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值