mongodb數(shù)據(jù)庫和crontab指令

1指令操作

1.1.操作mongodb數(shù)據(jù)庫

  • 創(chuàng)建數(shù)據(jù)庫
    語法:use數(shù)據(jù)庫名
    注意:如果數(shù)據(jù)庫不存在則創(chuàng)建數(shù)據(jù)庫,否則切換到指定的數(shù)據(jù)庫
    注意:如果剛剛創(chuàng)建的數(shù)據(jù)庫不在列表內(nèi),如果要顯示它毡咏,我們需要向剛剛創(chuàng)建的數(shù)據(jù)庫中插入一些數(shù)據(jù)
    ( db.star.insert({name:"tom", age:18, gender:1,address:"北京", isDelete:0}) )
  • 刪除數(shù)據(jù)庫
    前提:使用當前數(shù)據(jù)庫(use 數(shù)據(jù)庫名)
    db.dropDatabase()
  • 查看所有數(shù)據(jù)庫
    show dbs
  • 查看當前正在使用的數(shù)據(jù)庫
    a、db
    b、db.getName()
  • 斷開連接
    exit
  • 查看命令api
    help

1.2.集合操作

  • 查看當前數(shù)據(jù)庫下有哪些集合
    show collections
  • 創(chuàng)建集合
    a、
    語法:db.createCollection("集合名")
    示例:db.createCollection("class")
    b反惕、
    語法:db.集合名.insert(文檔)
    示例:db.student.insert({name:"tom", age:18, gender:1,address:"北京", isDelete:0})
    區(qū)別:兩者的區(qū)別在于前者創(chuàng)建的是一個空的集合,后者創(chuàng)建一個空的集合并添加一個文檔
  • 刪除當前數(shù)據(jù)庫中的集合
    語法:db.集合名.drop()
    示例:db.class.drop()
  • 【注】MongoDB中添加數(shù)據(jù)演侯,字段可以不一樣

1.3.文檔操作

  • 插入文檔

    • a姿染、使用insert()方法插入文檔
      語法:db.集合名.insert(文檔)
      插入一個:db.student.insert({name:"劉歡", age:19,address:"北京", isDelete:0})
      語法:db.集合名.insert([文檔1, 文檔2, ……, 文檔n])
      插入多個:db.student.insert([{name:"馬德華", age:17,address:"北京", isDelete:0},{name:"鳳凰女", age:20,address:"上海", isDelete:0}])
    • b、使用save()方法插入文檔
      語法:db.集合名.save(文檔)
      說明:如果不指定_id字段蚌本,save()方法類似于insert()方法盔粹。如果指定_id字段,則會更新_id字段的數(shù)據(jù)
      示例1:db.student.save({name:"科比", age:22,address:"洛杉磯", isDelete:0})
      示例2:db.student.save({_id:ObjectId("59950962019723fe2a0d8d17"),name:"姚明", age:23,address:"休斯頓", isDelete:0})
      如果id存在程癌,更新數(shù)據(jù)舷嗡,不存在添加數(shù)據(jù)
  • 文檔更新

    • a、update()方法用于更新已存在的文檔
db.集合名.update(
                query,     # 查詢條件
                update,    # 更新什么
                {          # 附加功能
                    upsert:<boolean>,
                    multi:<boolean>
                }
            )
  • 參數(shù)說明:
    query:update的查詢條件嵌莉,類似于sql里update語句內(nèi)where后面的內(nèi)容
    update:update的對象和一些更新的操作符(set,inc)等进萄,set直接更新,inc在原有的基礎(chǔ)上累加后更新
    upsert:可選锐峭,如果不存在update的記錄中鼠,是否當新數(shù)據(jù)插入,true為插入沿癞,F(xiàn)alse為不插入援雇,默認為false
    multi:可選,mongodb默認是false椎扬,只更新找到的第一條記錄惫搏,如果這個參數(shù)為true,就按照條件查找出來的數(shù)據(jù)全部更新

  • 需求:將劉德華的年齡更新為25

  • 示例:

db.student.update({name:"劉德華"},{$set:{age:25}})

累加:db.student.update({name:"劉德華"},{$inc:{age:25}})

全改:db.student.update({name:"劉德華"},{$set:{age:42}},{multi:true})

  • b、save()方法通過傳入的文檔替換已有文檔
    必須有_id這個鍵才是更新
    語法:
db.集合名.save(
    document
    )
參數(shù)說明:
document:文檔數(shù)據(jù)

1.3.文檔刪除

  • 說明:在執(zhí)行remove()函數(shù)前蚕涤,先執(zhí)行find()命令來判斷執(zhí)行的條件是否存在是一個良好習(xí)慣
  • 也可以使用查詢中的and和or
語法:
            db.集合名.remove(
                query,
                {
                    justOne:<boolean>
                }
            )

參數(shù)說明:
query:可選筐赔,刪除的文檔的條件
justOne: 可選,如何為true獲取1揖铜,則只刪除一個文檔
示例:db.student.remove({name:"劉德華"})

1.4.文檔查詢

  • a茴丰、find()方法
    語法:db.集合名.find()
    查詢集合下所有的文檔(數(shù)據(jù)):db.student.find()
  • b、find()方法查詢指定列
    語法:db.集合名.find(
    query,
    {
    <key>:1,
    <key>:1
    }
    )
    參數(shù)說明:
    query:查詢條件
    key:要顯示的字段天吓,1表示顯示
    示例:
    查詢指定條件贿肩,只顯示name和age
    db.student.find({isDelete:0},{name:1,age:1})
    查詢所有只顯示name和age鍵值
    db.student.find({},{name:1,age:1})
  • c、pretty()方法驛格式方式來顯示文檔
    示例:db.student.find().pretty()
    其實就是字典形式顯示
  • d龄寞、findOne()方法查詢匹配結(jié)果的第一條數(shù)據(jù)
    示例:db.student.findOne({isDelete:0})

1.5.查詢條件操作符

作用:條件操作符用于比較兩個表達式并從Mongodb集合中獲取數(shù)據(jù)

        a尸曼、大于 - $gt   greater than
            語法:db.集合名.find({<key>:{$gt:<value>}})
            示例:db.student.find({age:{$gt:20}})
        b、大于等于 - $gte  equal
            語法:db.集合名.find({<key>:{$gte:<value>}})
        c萄焦、小于 - $lt   less than
            語法:db.集合名.find({<key>:{$lt:<value>}})
        d控轿、小于等于 - $lte
            語法:db.集合名.find({<key>:{$lte:<value>}})
        e、大于等于 和 小于等于 - $gte 和 $lte
            語法:db.集合名.find({<key>:{$gte:<value>,$lte:<value>}})
        f拂封、等于 - :
            語法:db.集合名.find({<key>:<value>})
        g茬射、使用_id進行查詢
            語法:db.student.find({"_id":ObjectId("id值")})
            示例:db.student.find({"_id":ObjectId("5995084b019723fe2a0d8d14")})
        h、查詢某個結(jié)果集的數(shù)據(jù)條數(shù)
            db.student.find().count()
        i冒签、查詢某個字段的值當中是否包含另一個值
            語法:
            示例:db.student.find({name:/love/}) 包含love
        j在抛、查詢某個字段的值是否以另一個值開頭
            示例:db.student.find({name:/^li/}) 開頭
            示例:db.student.find({name:/li$/}) 結(jié)尾

1.6.條件查詢and和or

  • a、AND條件
語法:db.集合名.find({條件1,條件2,……,條件n})
示例:db.student.find({isDelete:0,age:{$gt:16}})
  • b萧恕、OR條件
語法:
                db.集合名.find(
                    {
                        $or:[{條件1},{條件2},……,{條件n}]
                    }
                )
            示例:db.student.find({$or:[{age:17},{age:{$gte:20}}]})
  • c刚梭、AND和OR聯(lián)合使用
語法:
                db.集合名.find(
                    {
                        條件1,
                        條件2,
                        $or:[{條件3},{條件4}]
                    }
                )
                sex是女
                age>30
                height=160 or height=158
            db.star.find({sex:'女',age:{$gt:30},$or:[{height:160},{height:158}]})

1.7.limit肠阱、skip

limit 偏移量,數(shù)量 ---- 20條數(shù)據(jù)朴读,每頁顯示4條

  • a屹徘、limit(): 讀取指定數(shù)量的數(shù)據(jù)記錄
    db.student.find().limit(3)
  • b、skip():跳過指定數(shù)量的數(shù)據(jù)
    db.student.find().skip(3)
  • c衅金、skip與limit聯(lián)合使用
    通常用這種方式來實現(xiàn)分頁功能
    示例:db.student.find().skip(3).limit(3)
    20條數(shù)據(jù)噪伊,每頁顯示4條,直接得到第三頁所有數(shù)據(jù)
    db.star.find().skip((3-1)*4).limit(4)

1.8.排序

語法:db.集合名.find().sort({<key>:1|-1})
示例:db.student.find().sort({age:1})
注意:1表示升序,-1表示降序
db.star.find({sex:'女'}).sort({age:1,height:-1})
先按照年齡升序排列氮唯,然后按照身高降序排列

2.可視化操作

通過可視化工具Robo軟件進行操作

3.pygame代碼操作

3.1.導(dǎo)入pymongo

pip install pymongo
from pymongo import MongoClient

3.2.連接服務(wù)器

端口號 27017
連接MongoDB
連接MongoDB我們需要使用PyMongo庫里面的MongoClient鉴吹,一般來說傳入MongoDB的IP及端口即可,第一個參數(shù)為地址host惩琉,第二個參數(shù)為端口port豆励,端口如果不傳默認是27017。
conn = MongoClient("localhost")
MongoClient(host='127.0.0.1',port=27017)

3.3.連接數(shù)據(jù)庫

db = conn.數(shù)據(jù)庫名稱
連接集合
collection = db[collection_name]
or
collection = db.collection_name
查看全部集合名稱
db.collection_names()

3.4.插入數(shù)據(jù)

  • (1) 插入一條數(shù)據(jù)
    db.user.insert({"name":"小剛","age":18,"hobby":"學(xué)習(xí)"})
  • (2) 插入多條數(shù)據(jù)
    db.user.insert([{"name":"小剛","age":18,"hobby":"學(xué)習(xí)"},{"name":"xxxoo","age":48,"hobby":"學(xué)習(xí)"}]
  • (3) 在3.x以上 建議 使用
    insert_one 插入一條數(shù)據(jù)
    insert_many() 插入多條數(shù)據(jù)
  • (4) 返回 id 使用insert_one()或者insert_many()
    ret.inserted_id
    ret.inserted_ids 得到其 _id

3.5.查詢數(shù)據(jù)

  • (1) 查詢所有
    db.user.find()
    帶條件的查詢
    data = db.user.find({"name":"周日"})
    print(data) #返回result類似一個生成器 可以使用 next方法 一個一個 的取出來
    print(next(data)) #取出一條數(shù)據(jù)
  • (2) 查詢一條
    db.user.find_one()
  • (3) 帶條件查詢 db.user.find({"name":"張三"})
  • (4) 查詢 id
    from bson.objectid import ObjectId* #用于ID查詢
    data = db.user.find({"_id":ObjectId("59a2d304b961661b209f8da1")})
  • (5) 模糊查詢
    (1){"name":{'$regex':"張"}}
    (2)import re {'xxx':re.compile('xxx')}
  • (2)import re {'xxx':re.compile('xxx')}
    (6) sort 排序
    年齡 大于10
    data = db.user.find({"age":{"gt":10}}).sort("age",1) #年齡 升序 查詢 pymongo.ASCENDING --升序 data = db.user.find({"age":{"gt":10}}).sort("age",-1) #年齡 降序 查詢 pymongo.DESCENDING --降序
  • (7) limit 取值
    取三條數(shù)據(jù)
    db.user.find().limit(3)
    data = db.user.find({"age":{"$gt":10}}).sort("age",-1).limit(3)
  • (8) count 統(tǒng)計數(shù)據(jù)條數(shù)
    db.user.find().count()
  • (9) skip 從第幾條數(shù)據(jù)開始取
    db.user.find().skip(2)

3.6.修改

update()方法其實也是官方不推薦使用的方法瞒渠,在這里也分了update_one()方法和update_many()方法肆糕,用法更加嚴格,

  • (1) update()

db.user.update({"name":"張三"},{"$set":{"age":25}})

db.user.update({"name":"張三"},{"$inc":{"age":25}})

  • (2) update_one() 第一條符合條件的數(shù)據(jù)進行更新
    db.user.update_one({"name":"張三"},{"$set":{"age":99}})
  • (3) update_many() 將所有符合條件的數(shù)據(jù)都更新
    db.user.update_many({"name":"張三"},{"$set":{"age":91}})
  • (4) 返回結(jié)果是UpdateResult類型
    然后調(diào)用matched_count和modified_count屬性分別可以獲得匹配的數(shù)據(jù)條數(shù)和影響的數(shù)據(jù)條數(shù)
    print(result.matched_count, result.modified_count)

3.7.刪除

刪除操作比較簡單在孝,直接調(diào)用remove()方法指定刪除的條件即可诚啃,符合條件的所有數(shù)據(jù)均會被刪除,

  • (1) 刪除 lilei
    collection.remove({"name":"lilei"})
  • (2) 全部刪除
    collection.remove()
  • (3) 依然存在兩個新的推薦方法
    delete_one()和delete_many()方法私沮,示例如下:
    delete_one()即刪除第一條符合條件的數(shù)據(jù)
    collection.delete_one({“name”:“ Kevin”})
    delete_many()即刪除所有符合條件的數(shù)據(jù)始赎,返回結(jié)果是DeleteResult類型
    collection.delete_many({“age”: {'$lt':25}})
  • (4) 可以調(diào)用deleted_count屬性獲取刪除的數(shù)據(jù)條數(shù)。
    result.deleted_count

3.8.關(guān)閉連接

conn.close()

4.crontab指令

crontab 詳解
計劃任務(wù)
應(yīng)用場景:
要求你每天晚上備份一下你的數(shù)據(jù)庫仔燕,凌晨4點
每隔一分鐘抓取一次你競爭對手的網(wǎng)站造垛,建立情報

4.1. crontav -e

給當前用戶添加調(diào)度任務(wù)
新建任務(wù)調(diào)度指令
編寫腳本 /out.sh
#!/bash/sh
cd /
ls -l > /1.txt
編寫任務(wù)腳本定時執(zhí)行這個shell腳本

crontab文件的格式:M H D m d cmd
分鐘:0-59  每分鐘使用*  或者 */1
小時:0-23
日期:1-31
月份:1-12
星期:0-6   0表示星期天
#分鐘 小時  日期  月份  星期  指令
  17    12      9       4       6       /out.sh  4月9號12點17并且是星期六執(zhí)行指令
  43    21      *       *       *                每天的21:43執(zhí)行指令
  0     17      *       *       1                每周一的17點執(zhí)行指令
  4     4       1       *       *                每月1號4:4執(zhí)行指令
  0     21      *       *       1-6              周一到周六每天21:00執(zhí)行指令
  2     8-20/3  *       *       *                8:02/11:02/14:02/17:02/20:02 執(zhí)行
  30    5       1,5     *       *                每月1號和5號的5:30執(zhí)行
  */1   *       *       *       *

4.2.crontab -l 查看當前用戶所有的任務(wù)調(diào)度指令

4.3.crontab -r 刪除當前用戶所有任務(wù)調(diào)度指令

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市晰搀,隨后出現(xiàn)的幾起案子五辽,更是在濱河造成了極大的恐慌,老刑警劉巖外恕,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杆逗,死亡現(xiàn)場離奇詭異,居然都是意外死亡鳞疲,警方通過查閱死者的電腦和手機罪郊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尚洽,“玉大人悔橄,你說我怎么就攤上這事。” “怎么了癣疟?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵挣柬,是天一觀的道長。 經(jīng)常有香客問我睛挚,道長邪蛔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任竞川,我火速辦了婚禮店溢,結(jié)果婚禮上叁熔,老公的妹妹穿的比我還像新娘委乌。我一直安慰自己,他們只是感情好荣回,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布遭贸。 她就那樣靜靜地躺著,像睡著了一般心软。 火紅的嫁衣襯著肌膚如雪壕吹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天删铃,我揣著相機與錄音耳贬,去河邊找鬼。 笑死猎唁,一個胖子當著我的面吹牛咒劲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诫隅,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼腐魂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逐纬?” 一聲冷哼從身側(cè)響起蛔屹,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎豁生,沒想到半個月后兔毒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡甸箱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年眼刃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摇肌。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡擂红,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昵骤,我是刑警寧澤树碱,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站变秦,受9級特大地震影響成榜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蹦玫,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一赎婚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧樱溉,春花似錦挣输、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挖帘,卻和暖如春完丽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拇舀。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工逻族, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骄崩。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓聘鳞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親刁赖。 傳聞我的和親對象是個殘疾皇子搁痛,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,898評論 2 89
  • 一、MongoDB簡介 概述MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫宇弛,由C++語言編寫鸡典。旨在為WEB應(yīng)用提供...
    EndEvent閱讀 1,159評論 1 4
  • 一、MongoDB簡介 概述MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫枪芒,由C++語言編寫彻况。旨在為WEB應(yīng)用提供...
    fly5閱讀 284評論 0 0
  • 1、安裝 見文檔, MongoDB監(jiān)聽端口為27017鏈接本機:mongo鏈接其他機器:mongo ip:2701...
    Kris_Shin閱讀 219評論 0 1
  • 我謳歌北方母親 你是我最愛的人 我熱愛北方的黃土地 你是生育我的另一位母親 我用眼睛祭奠 祭奠北方的春暖花開 我用...
    詩人天山暮雪閱讀 245評論 0 4