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

1指令操作

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

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

1.2.集合操作

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

1.3.文檔操作

  • 插入文檔

    • a、使用insert()方法插入文檔
      語(yǔ)法:db.集合名.insert(文檔)
      插入一個(gè):db.student.insert({name:"劉歡", age:19,address:"北京", isDelete:0})
      語(yǔ)法:db.集合名.insert([文檔1, 文檔2, ……, 文檔n])
      插入多個(gè):db.student.insert([{name:"馬德華", age:17,address:"北京", isDelete:0},{name:"鳳凰女", age:20,address:"上海", isDelete:0}])
    • b、使用save()方法插入文檔
      語(yǔ)法:db.集合名.save(文檔)
      說(shuō)明:如果不指定_id字段,save()方法類(lèi)似于insert()方法。如果指定_id字段,則會(huì)更新_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,     # 查詢(xún)條件
                update,    # 更新什么
                {          # 附加功能
                    upsert:<boolean>,
                    multi:<boolean>
                }
            )
  • 參數(shù)說(shuō)明:
    query:update的查詢(xún)條件,類(lèi)似于sql里update語(yǔ)句內(nèi)where后面的內(nèi)容
    update:update的對(duì)象和一些更新的操作符(set,inc)等,set直接更新,inc在原有的基礎(chǔ)上累加后更新
    upsert:可選,如果不存在update的記錄,是否當(dāng)新數(shù)據(jù)插入,true為插入,F(xiàn)alse為不插入,默認(rèn)為false
    multi:可選,mongodb默認(rèn)是false,只更新找到的第一條記錄,如果這個(gè)參數(shù)為true,就按照條件查找出來(lái)的數(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()方法通過(guò)傳入的文檔替換已有文檔
    必須有_id這個(gè)鍵才是更新
    語(yǔ)法:
db.集合名.save(
    document
    )
參數(shù)說(shuō)明:
document:文檔數(shù)據(jù)

1.3.文檔刪除

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

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

1.4.文檔查詢(xún)

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

1.5.查詢(xún)條件操作符

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

        a、大于 - $gt   greater than
            語(yǔ)法:db.集合名.find({<key>:{$gt:<value>}})
            示例:db.student.find({age:{$gt:20}})
        b、大于等于 - $gte  equal
            語(yǔ)法:db.集合名.find({<key>:{$gte:<value>}})
        c、小于 - $lt   less than
            語(yǔ)法:db.集合名.find({<key>:{$lt:<value>}})
        d、小于等于 - $lte
            語(yǔ)法:db.集合名.find({<key>:{$lte:<value>}})
        e、大于等于 和 小于等于 - $gte 和 $lte
            語(yǔ)法:db.集合名.find({<key>:{$gte:<value>,$lte:<value>}})
        f、等于 - :
            語(yǔ)法:db.集合名.find({<key>:<value>})
        g、使用_id進(jìn)行查詢(xún)
            語(yǔ)法:db.student.find({"_id":ObjectId("id值")})
            示例:db.student.find({"_id":ObjectId("5995084b019723fe2a0d8d14")})
        h、查詢(xún)某個(gè)結(jié)果集的數(shù)據(jù)條數(shù)
            db.student.find().count()
        i、查詢(xún)某個(gè)字段的值當(dāng)中是否包含另一個(gè)值
            語(yǔ)法:
            示例:db.student.find({name:/love/}) 包含love
        j、查詢(xún)某個(gè)字段的值是否以另一個(gè)值開(kāi)頭
            示例:db.student.find({name:/^li/}) 開(kāi)頭
            示例:db.student.find({name:/li$/}) 結(jié)尾

1.6.條件查詢(xún)and和or

  • a、AND條件
語(yǔ)法:db.集合名.find({條件1,條件2,……,條件n})
示例:db.student.find({isDelete:0,age:{$gt:16}})
  • b、OR條件
語(yǔ)法:
                db.集合名.find(
                    {
                        $or:[{條件1},{條件2},……,{條件n}]
                    }
                )
            示例:db.student.find({$or:[{age:17},{age:{$gte:20}}]})
  • c、AND和OR聯(lián)合使用
語(yǔ)法:
                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ù),每頁(yè)顯示4條

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

1.8.排序

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

2.可視化操作

通過(guò)可視化工具Robo軟件進(jìn)行操作

3.pygame代碼操作

3.1.導(dǎo)入pymongo

pip install pymongo
from pymongo import MongoClient

3.2.連接服務(wù)器

端口號(hào) 27017
連接MongoDB
連接MongoDB我們需要使用PyMongo庫(kù)里面的MongoClient,一般來(lái)說(shuō)傳入MongoDB的IP及端口即可,第一個(gè)參數(shù)為地址host,第二個(gè)參數(shù)為端口port,端口如果不傳默認(rèn)是27017。
conn = MongoClient("localhost")
MongoClient(host='127.0.0.1',port=27017)

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

db = conn.數(shù)據(jù)庫(kù)名稱(chēng)
連接集合
collection = db[collection_name]
or
collection = db.collection_name
查看全部集合名稱(chēng)
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.查詢(xún)數(shù)據(jù)

  • (1) 查詢(xún)所有
    db.user.find()
    帶條件的查詢(xún)
    data = db.user.find({"name":"周日"})
    print(data) #返回result類(lèi)似一個(gè)生成器 可以使用 next方法 一個(gè)一個(gè) 的取出來(lái)
    print(next(data)) #取出一條數(shù)據(jù)
  • (2) 查詢(xún)一條
    db.user.find_one()
  • (3) 帶條件查詢(xún) db.user.find({"name":"張三"})
  • (4) 查詢(xún) id
    from bson.objectid import ObjectId* #用于ID查詢(xún)
    data = db.user.find({"_id":ObjectId("59a2d304b961661b209f8da1")})
  • (5) 模糊查詢(xún)
    (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) #年齡 升序 查詢(xún) pymongo.ASCENDING --升序 data = db.user.find({"age":{"gt":10}}).sort("age",-1) #年齡 降序 查詢(xún) 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)計(jì)數(shù)據(jù)條數(shù)
    db.user.find().count()
  • (9) skip 從第幾條數(shù)據(jù)開(kāi)始取
    db.user.find().skip(2)

3.6.修改

update()方法其實(shí)也是官方不推薦使用的方法,在這里也分了update_one()方法和update_many()方法,用法更加嚴(yán)格,

  • (1) update()

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

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

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

3.7.刪除

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

  • (1) 刪除 lilei
    collection.remove({"name":"lilei"})
  • (2) 全部刪除
    collection.remove()
  • (3) 依然存在兩個(gè)新的推薦方法
    delete_one()和delete_many()方法,示例如下:
    delete_one()即刪除第一條符合條件的數(shù)據(jù)
    collection.delete_one({“name”:“ Kevin”})
    delete_many()即刪除所有符合條件的數(shù)據(jù),返回結(jié)果是DeleteResult類(lèi)型
    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 詳解
計(jì)劃任務(wù)
應(yīng)用場(chǎng)景:
要求你每天晚上備份一下你的數(shù)據(jù)庫(kù),凌晨4點(diǎn)
每隔一分鐘抓取一次你競(jìng)爭(zhēng)對(duì)手的網(wǎng)站,建立情報(bào)

4.1. crontav -e

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

crontab文件的格式:M H D m d cmd
分鐘:0-59  每分鐘使用*  或者 */1
小時(shí):0-23
日期:1-31
月份:1-12
星期:0-6   0表示星期天
#分鐘 小時(shí)  日期  月份  星期  指令
  17    12      9       4       6       /out.sh  4月9號(hào)12點(diǎn)17并且是星期六執(zhí)行指令
  43    21      *       *       *                每天的21:43執(zhí)行指令
  0     17      *       *       1                每周一的17點(diǎn)執(zhí)行指令
  4     4       1       *       *                每月1號(hào)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號(hào)和5號(hào)的5:30執(zhí)行
  */1   *       *       *       *

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

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

?著作權(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,317評(píng)論 2 89
  • 一、MongoDB簡(jiǎn)介 概述MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),由C++語(yǔ)言編寫(xiě)。旨在為WEB應(yīng)用提供...
    EndEvent閱讀 1,231評(píng)論 1 4
  • 一、MongoDB簡(jiǎn)介 概述MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),由C++語(yǔ)言編寫(xiě)。旨在為WEB應(yīng)用提供...
    fly5閱讀 362評(píng)論 0 0
  • 1、安裝 見(jiàn)文檔, MongoDB監(jiān)聽(tīng)端口為27017鏈接本機(jī):mongo鏈接其他機(jī)器:mongo ip:2701...
    Kris_Shin閱讀 261評(píng)論 0 1
  • 我謳歌北方母親 你是我最?lèi)?ài)的人 我熱愛(ài)北方的黃土地 你是生育我的另一位母親 我用眼睛祭奠 祭奠北方的春暖花開(kāi) 我用...
    詩(shī)人天山暮雪閱讀 289評(píng)論 0 4

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