mongoBD--python、mongodb交互

import pymongo
from pymongo.results import DeleteResult
from bson.objectid import ObjectId

创建数据库连接
"""
 host=None,:ip 127.0.0.1
 port=None,:端口 27017
"""
mongo_client = pymongo.MongoClient(
    host='127.0.0.1',port=27017
)
# mongo_client = pymongo.MongoClient(
#     'mongodb://127.0.0.1:27017/'
# )
#需要账号密码登录
# mongo_client = pymongo.MongoClient(
#     'mongodb://username:password@ip:port'
# )
选择数据库
db = mongo_client['mongotest']
# db = mongo_client.mongotest
选择数据库下的集合
col_name = db['test']
插入数据
def insert_data():
    document1 = {
            'title': 'this is a gril',
            'info': '1712B',
            'age': 18,
            'name': 'zhaowenzhu'
        }
    document2 = {
            'title': 'this is a gril',
            'info': '1712B',
            'age': 15,
            'name': 'zhaowenzhu'
        }
    document3 = {
        'title': 'this is a gril',
        'info': '1712B',
        'age': 12,
        'name': 'zhaowenzhu'
    }

    # result = col_name.insert(document1)
    # result = col_name.insert_one(document1)
    # print(result) #5c25e4be11575e4a4b0d0a91

    result = col_name.insert([document1,document2,document3])
    # result = col_name.insert_many([document1,document2])
    print(result)  # [ObjectId('5c25e50a11575e4a9cb2b91e'), ObjectId('5c25e50a11575e4a9cb2b91f')]
    print([str(i) for i in result])
def delete_data():
    #multi=True:可以删除多条数据,multi=False:删除一条 
    result = col_name.remove({'title':'斯巴达克斯'},multi=False)
    print(result) #{'ok': 1.0, 'n': 1}

    #删除一条
    result = col_name.delete_one({'title':'斯巴达克斯'})
    print(result.deleted_count)
    #删除多条
    result = col_name.delete_many({'title':'斯巴达克斯2'})
    print(result.deleted_count)
更新
def update_data():
    """
    update
    :return:
    """
    #指定属性更新
    #multi=False:默认情况下,只会修改一条
    # result = col_name.update(
    #     {'title':'斯巴达克斯5'},
    #     {'$set':{'info':'1712B'}}
    # )
    # print(result)
    #全文档更新
    #multi=False:默认情况下,只会修改一条
    #upsert=False:表示如果要更新的文档不在集合下,则什么都不做
    #upsert=True:表示如果要更新的文档不在集合下,则会插入一条新的文档
    # result = col_name.update(
    #     {'title':'斯巴达克斯5'},
    #     {'name':'张三','gender':'女','age':18}
    # )
    # print(result)

    #update_one和update_many使用的时候一定要记得添加
    #$set,
    # result = col_name.update_one(
    #     {'name':'田真'},
    #     {'$set':{'age':20,'class':'1712B'}}
    # )
    # print(result) #pymongo.results.UpdateResult
    # col_name.update_many()
save方法可以保存也可以更新数据
    from bson.objectid import ObjectId
    #save会做全文的那个更新
    # result = col_name.save(
    #     {
    #         '_id':ObjectId("5c26c01a11575e0bec8f0395"),
    #         'title':'this is a gril',
    #         'info':'1712B',
    #         'age':20,
    #         'name':'zhaowenzhu'
    #     }
    # )
    # print(result)
    #如果_id不存在,则插入一条新数据
    result = col_name.save(
        {
            '_id': '1234567',
            'title': 'this is a gril',
            'info': '1712B',
            'age': 20,
            'name': 'zhaowenzhu'
        }
    )
    print(result)
查找
def find_data():
    """
    查找
    :return:
    """
    #查找所有
    # result = col_name.find({})
    # print(result) #pymongo.cursor.Cursor object
    # print([i for i in result])
    #
    # #根据条件查找
    # result = col_name.find({'name':'zhaowenzhu'})
    # print([i for i in result])
    #
    # #查找一条
    # result = col_name.find_one({'name':'zhaowenzhu'})
    # print(result) #返回的是一个dict

    #limit:限制查询
    #skip:跳过
    #sort:排序 1:升序 -1:降序
    result = col_name.find({}).skip(2).limit(3).sort('age',-1)
    #要根据多个字段排序
    result = col_name.find({}).skip(2).limit(3).sort([('age',1),('years',1)])
    for i in result:
        print(i)

if __name__ == '__main__':

    #insert_data()
    # delete_data()
    # update_data()
    find_data()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,928评论 2 89
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,096评论 1 32
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,301评论 0 9
  • 《如何阅读一本书》读后感 这本书很吸引我,买来时,如饥似渴的读,而且颇有好感:“这本...
    木小叶阅读 376评论 2 2
  • 偶得(九) 惜春常恨花开早,寂寞小桃无主开。 伤春风雨急促促,落红明日满径来。
    方晓遇阅读 391评论 0 8