mongodb与python随手记

在python中使用pymongo连接mongodb数据库.

基本代码如下:

from pymongo import MongoClient

client = MongoClient('127.0.0.1', 27017) # mongodb的地址
db_name = 'myfirstmongo'                 # 数据库的名字
db = client[db_name]                     # 现在db就是这个数据库了
collection = db['testone']               # 'testone'是集合的名字,现在collection就是我们要用的集合了

查询一条数据和简单的分页操作:

import json
from bson import json_util as jsonb

def get_data_by_key(key):
    item = collection.find({"key":key})         # 直接用集合查询,find是mongo的方法
    # print item                                # 查询返回的item是一个对象,打印出来是<pymongo.cursor.Cursor object at 0x7f5d9bbc6f50>
    info = jsonb.dumps(item)                    # 使用bjson将对象转换成可读的形式,现在的info是str类型
    data = json.loads(info)                     # 使用json将字符串转换成python的相应类型,这里data是list列表
    return data

def get_page_data(page):
    page_len = 20                               # page_len是一页的长度,也可以作为参数传进来
    skp = (int(page)-1)*page_len                # skip是为了只查询某一页的,跳过之前的数据
    item = collection.find().skip(skp).limit(page_len)  # 从skp开始,查询page_len条数据
    info = jsonb.dumps(item)                    # 处理数据
    data = json.loads(info)                     # 处理数据
return data
get_data_by_key是通过某一个条件查询,也可以多条件查询.要注意key的数据类型.
增删改等操作与上面过程类似,只需修改collection对应的操作函数.
删除数据:collection.find_one_and_delete({'key':key}),或者collection.remove({'key':key})
谨慎使用remove(),她的括号里为空时,会删掉集合里面的所有数据;
增加数据:collection.insert({'key':'123','msg':'test'}),也可插入多条,将多条数据放入列表中,将列表传入insert()即可;
更新数据:collection.update({'key':'123'},{'msg':'new'},True,True),
update参数含义:第一个是查询参数,第二个是要更新的内容,第三个是决定在没有查到该条数据时是否创建,第四个是查询到多条数据时是否都要更改;
更新数据还可以使用修改器,这里不做记录了.
posted @ 2017-05-12 18:02  Masako  阅读(218)  评论(0编辑  收藏  举报