mongoBD--python、mongodb交互

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

創(chuàng)建數(shù)據(jù)庫(kù)連接
"""
 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/'
# )
#需要賬號(hào)密碼登錄
# mongo_client = pymongo.MongoClient(
#     'mongodb://username:password@ip:port'
# )
選擇數(shù)據(jù)庫(kù)
db = mongo_client['mongotest']
# db = mongo_client.mongotest
選擇數(shù)據(jù)庫(kù)下的集合
col_name = db['test']
插入數(shù)據(jù)
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:可以刪除多條數(shù)據(jù),multi=False:刪除一條 
    result = col_name.remove({'title':'斯巴達(dá)克斯'},multi=False)
    print(result) #{'ok': 1.0, 'n': 1}

    #刪除一條
    result = col_name.delete_one({'title':'斯巴達(dá)克斯'})
    print(result.deleted_count)
    #刪除多條
    result = col_name.delete_many({'title':'斯巴達(dá)克斯2'})
    print(result.deleted_count)
更新
def update_data():
    """
    update
    :return:
    """
    #指定屬性更新
    #multi=False:默認(rèn)情況下,只會(huì)修改一條
    # result = col_name.update(
    #     {'title':'斯巴達(dá)克斯5'},
    #     {'$set':{'info':'1712B'}}
    # )
    # print(result)
    #全文檔更新
    #multi=False:默認(rèn)情況下,只會(huì)修改一條
    #upsert=False:表示如果要更新的文檔不在集合下,則什么都不做
    #upsert=True:表示如果要更新的文檔不在集合下,則會(huì)插入一條新的文檔
    # result = col_name.update(
    #     {'title':'斯巴達(dá)克斯5'},
    #     {'name':'張三','gender':'女','age':18}
    # )
    # print(result)

    #update_one和update_many使用的時(shí)候一定要記得添加
    #$set,
    # result = col_name.update_one(
    #     {'name':'田真'},
    #     {'$set':{'age':20,'class':'1712B'}}
    # )
    # print(result) #pymongo.results.UpdateResult
    # col_name.update_many()
save方法可以保存也可以更新數(shù)據(jù)
    from bson.objectid import ObjectId
    #save會(huì)做全文的那個(gè)更新
    # result = col_name.save(
    #     {
    #         '_id':ObjectId("5c26c01a11575e0bec8f0395"),
    #         'title':'this is a gril',
    #         'info':'1712B',
    #         'age':20,
    #         'name':'zhaowenzhu'
    #     }
    # )
    # print(result)
    #如果_id不存在,則插入一條新數(shù)據(jù)
    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])
    #
    # #根據(jù)條件查找
    # result = col_name.find({'name':'zhaowenzhu'})
    # print([i for i in result])
    #
    # #查找一條
    # result = col_name.find_one({'name':'zhaowenzhu'})
    # print(result) #返回的是一個(gè)dict

    #limit:限制查詢(xún)
    #skip:跳過(guò)
    #sort:排序 1:升序 -1:降序
    result = col_name.find({}).skip(2).limit(3).sort('age',-1)
    #要根據(jù)多個(gè)字段排序
    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()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,273評(píng)論 2 89
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,621評(píng)論 1 32
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,918評(píng)論 0 9
  • 《如何閱讀一本書(shū)》讀后感 這本書(shū)很吸引我,買(mǎi)來(lái)時(shí),如饑似渴的讀,而且頗有好感:“這本...
    木小葉閱讀 406評(píng)論 2 2
  • 偶得(九) 惜春常恨花開(kāi)早,寂寞小桃無(wú)主開(kāi)。 傷春風(fēng)雨急促促,落紅明日滿徑來(lái)。
    方曉遇閱讀 450評(píng)論 0 8

友情鏈接更多精彩內(nèi)容