日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

第二章节 MongoDB的基本命令

發(fā)布時(shí)間:2024/3/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二章节 MongoDB的基本命令 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MongoDB基本命令

      • 1. 數(shù)據(jù)庫(kù)的命令
      • 2.集合的命令
      • 3.文檔的CRUD
        • 1.文檔的插入
        • 2.文檔的基本查詢
        • 3.文檔的更新
        • 4.刪除文檔
      • 4.文檔的分頁(yè)查詢
        • 1. count查詢
        • 2. 分頁(yè)列表查詢
        • 3.排序查詢
      • 5.文檔的高級(jí)查詢
        • 1.正則查詢/模糊查詢
        • 2.比較查詢
        • 3.包含查詢
        • 4.條件連接查詢
      • 6.總結(jié)

1. 數(shù)據(jù)庫(kù)的命令

(1)選擇和創(chuàng)建數(shù)據(jù)庫(kù)

use 數(shù)據(jù)庫(kù)名稱 # 如果數(shù)據(jù)庫(kù)不存在則自動(dòng)創(chuàng)建 use articledb

(2)查看有權(quán)限查看的所有數(shù)據(jù)庫(kù)命令

show dbs 或 show databases

注意: 在 MongoDB 中,集合只有在內(nèi)容插入后才會(huì)創(chuàng)建! 就是說(shuō),創(chuàng)建集合(數(shù)據(jù)表)后要再插入一個(gè)文檔(記錄),集合才會(huì)真正創(chuàng)建。

(3)查看當(dāng)前正在使用的數(shù)據(jù)庫(kù)命令

db

MongoDB 中默認(rèn)的數(shù)據(jù)庫(kù)為 test,如果你沒(méi)有選擇數(shù)據(jù)庫(kù),集合將存放在 test 數(shù)據(jù)庫(kù)中。

(4)刪除已經(jīng)持久化的數(shù)據(jù)庫(kù)

db.dropDatabase()

2.集合的命令

(1)集合的顯示創(chuàng)建及查看

# 顯示創(chuàng)建(了解) # 語(yǔ)法格式 db.createCollection(name) # name 標(biāo)識(shí)集合的名稱#查看當(dāng)前庫(kù)中的表 show collections 或 show tables

集合的命名規(guī)范:

  • 集合名不能是空字符串""。

  • 集合名不能含有\(zhòng)0字符(空字符),這個(gè)字符表示集合名的結(jié)尾。

  • 集合名不能以"system."開頭,這是為系統(tǒng)集合保留的前綴。

  • 用戶創(chuàng)建的集合名字不能含有保留字符。有些驅(qū)動(dòng)程序的確支持在集合名里面包含,這是因?yàn)槟承┫到y(tǒng)生成的集合中包含該字符。除 非你要訪問(wèn)這種系統(tǒng)創(chuàng)建的集合,否則千萬(wàn)不要在名字里出現(xiàn)$。

(2)集合的隱式創(chuàng)建

當(dāng)向一個(gè)集合中插入一個(gè)文檔的時(shí)候,如果集合不存在,則會(huì)自動(dòng)創(chuàng)建集合。

(3)集合的刪除

語(yǔ)法格式

db.collection.drop() 或 db.集合.drop()

返回值

如果成功刪除選定集合,則 drop() 方法返回 true,否則返回 false。

eg:刪除mycollection集合

db.mycollection.drop();

3.文檔的CRUD

1.文檔的插入

1)單個(gè)插入

語(yǔ)法:

# 使用insert() 或 save() 方法向集合中插入文檔,語(yǔ)法如下:db.collection.insert(<document or array of documents>,{writeConcern: <document>,ordered: <boolean>} )

參數(shù):

ParameterTypeDescription
documentdocument or array要插入到集合中的文檔或文檔數(shù)組。((json格式)
writeConcerndocument
orderedboolean可選。如果為真,則按順序插入數(shù)組中的文檔,如果其中一個(gè)文檔出現(xiàn)錯(cuò)誤,MongoDB將返回而 不處理數(shù)組中的其余文檔。如果為假,則執(zhí)行無(wú)序插入,如果其中一個(gè)文檔出現(xiàn)錯(cuò)誤,則繼續(xù)處理 數(shù)組中的主文檔。在版本2.6+中默認(rèn)為true

【示例】

db.comment.insert({"articleid":"100000","content":"今天天氣真好,陽(yáng)光明媚","userid":"1001","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(10),"state":null})

返回值為以下內(nèi)容說(shuō)明插入成功

WriteResult({ "nInserted" : 1 })

2)批量插入

語(yǔ)法:

db.collection.insertMany([ <document 1> , <document 2>, ... ],{writeConcern: <document>,ordered: <boolean>} )

參數(shù):

ParameterTypeDescription
documentdocument or array要插入到集合中的文檔或文檔數(shù)組。((json格式)
writeConcerndocument
orderedboolean可選。如果為真,則按順序插入數(shù)組中的文檔,如果其中一個(gè)文檔出現(xiàn)錯(cuò)誤,MongoDB將返回而 不處理數(shù)組中的其余文檔。如果為假,則執(zhí)行無(wú)序插入,如果其中一個(gè)文檔出現(xiàn)錯(cuò)誤,則繼續(xù)處理 數(shù)組中的主文檔。在版本2.6+中默認(rèn)為true

【示例】

db.comment.insertMany([{"_id":"1","articleid":"100001","content":"我們不應(yīng)該把清晨浪費(fèi)在手機(jī)上,健康很重要,一杯溫水幸福你我他。","userid":"1002","nickname":"相忘于江湖","createdatetime":new Date("2019-08-05T22:08:15.522Z"),"likenum":NumberInt(1000),"state":"1"},{"_id":"2","articleid":"100001","content":"我夏天空腹喝涼開水,冬天喝溫開水","userid":"1005","nickname":"伊人憔悴","createdatetime":new Date("2019-08-05T23:58:51.485Z"),"likenum":NumberInt(888),"state":"1"},{"_id":"3","articleid":"100001","content":"我一直喝涼開水,冬天夏天都喝。","userid":"1004","nickname":"杰克船長(zhǎng)","createdatetime":new Date("2019-08-06T01:05:06.321Z"),"likenum":NumberInt(666),"state":"1"},{"_id":"4","articleid":"100001","content":"專家說(shuō)不能空腹吃飯,影響健康。","userid":"1003","nickname":"凱撒","createdatetime":new Date("2019-08-06T08:18:35.288Z"),"likenum":NumberInt(2000),"state":"1"},{"_id":"5","articleid":"100001","content":"研究表明,剛燒開的水千萬(wàn)不能喝,因?yàn)闋C嘴。","userid":"1003","nickname":"凱撒","createdatetime":new Date("2019-08-06T11:01:02.521Z"),"likenum":NumberInt(3000),"state":"1"}]);

如果某條數(shù)據(jù)插入失敗,將會(huì)終止插入,但已經(jīng)插入成功的數(shù)據(jù)不會(huì)回滾掉。

因?yàn)榕坎迦胗捎跀?shù)據(jù)較多容易出現(xiàn)失敗,因此,可以使用try catch進(jìn)行異常捕捉處理,測(cè)試的時(shí)候可以不處理。如(了解):

try { db.comment.insertMany([{"_id":"1","articleid":"100001","content":"我們不應(yīng)該把清晨浪費(fèi)在手機(jī)上,健康很重要,一杯溫水幸福你我他。","userid":"1002","nickname":"相忘于江湖","createdatetime":new Date("2019-08-05T22:08:15.522Z"),"likenum":NumberInt(1000),"state":"1"},{"_id":"2","articleid":"100001","content":"我夏天空腹喝涼開水,冬天喝溫開水","userid":"1005","nickname":"伊人憔悴","createdatetime":new Date("2019-08-05T23:58:51.485Z"),"likenum":NumberInt(888),"state":"1"},{"_id":"3","articleid":"100001","content":"我一直喝涼開水,冬天夏天都喝。","userid":"1004","nickname":"杰克船長(zhǎng)","createdatetime":new Date("2019-08-06T01:05:06.321Z"),"likenum":NumberInt(666),"state":"1"},{"_id":"4","articleid":"100001","content":"專家說(shuō)不能空腹吃飯,影響健康。","userid":"1003","nickname":"凱撒","createdatetime":new Date("2019-08-06T08:18:35.288Z"),"likenum":NumberInt(2000),"state":"1"},{"_id":"5","articleid":"100001","content":"研究表明,剛燒開的水千萬(wàn)不能喝,因?yàn)闋C嘴。","userid":"1003","nickname":"凱撒","createdatetime":new Date("2019-08-06T11:01:02.521Z"),"likenum":NumberInt(3000),"state":"1"}]); }catch(e){print(e); }

2.文檔的基本查詢

語(yǔ)法格式如下:

db.collection.find(<query>, [projection])

參數(shù):

ParameterTypeDescription
querydocument可選。使用查詢運(yùn)算符指定選擇篩選器。若要返回集合中的所有文檔,請(qǐng)省略此參數(shù)或傳遞空文檔 ( {} )。
projectiondocument可選。指定要在與查詢篩選器匹配的文檔中返回的字段(投影)。若要返回匹配文檔中的所有字段, 請(qǐng)省略此參數(shù)。

【示例】

1)查詢所有

db.comment.find() 或 db.comment.find({})

這里你會(huì)發(fā)現(xiàn)每條文檔會(huì)有一個(gè)叫_id的字段,這個(gè)相當(dāng)于我們?cè)瓉?lái)關(guān)系數(shù)據(jù)庫(kù)中表的主鍵,當(dāng)你在插入文檔記錄時(shí)沒(méi)有指定該字段, MongoDB會(huì)自動(dòng)創(chuàng)建,其類型是ObjectID類型。

按照條件查詢

db.comment.find({userid:'1003'})

按照條件查詢,只取第一條數(shù)據(jù)

db.comment.findOne({userid:'1003'})
  • 投影查詢
  • 意思是只取對(duì)應(yīng)的字段

    >db.comment.find({userid:"1003"},{userid:1,nickname:1}){ "_id" : "4", "userid" : "1003", "nickname" : "凱撒" } { "_id" : "5", "userid" : "1003", "nickname" : "凱撒" }

    默認(rèn) _id 會(huì)顯示。 如:查詢結(jié)果只顯示 、userid、nickname ,不顯示 _id :

    >db.comment.find({userid:"1003"},{userid:1,nickname:1,_id:0}) { "userid" : "1003", "nickname" : "凱撒" } { "userid" : "1003", "nickname" : "凱撒" }

    3.文檔的更新

    語(yǔ)法規(guī)則

    db.collection.update(query, update, options) //或 db.collection.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>,writeConcern: <document>,collation: <document>,arrayFilters: [ <filterdocument1>, ... ],hint: <document|string> // Available starting in MongoDB 4.2} )

    參數(shù):

    parameterTYPEDescription
    querydocument更新的選擇條件,當(dāng)upset:true時(shí),如果查詢使用了id條件,則MongoDB拒絕插入新文檔。
    updatedocument
    or
    pipeline
    要應(yīng)用的修改
    upsertboolean可選,如果設(shè)置為true,查不到會(huì)新增一條,默認(rèn)false,查不到不會(huì)新增
    multiboolean可選,如果設(shè)置為true,則更新所有查到的文檔,默認(rèn)false,只更新一個(gè)文檔。

    【示例】

    1)覆蓋修改

    db.comment.update({_id:"1"},{likenum:NumberInt(1001)});

    執(zhí)行后,其他屬性丟了

    2)局部修改

    使用修改器$set來(lái)實(shí)現(xiàn),命令如下:

    db.comment.update({_id:"3"},{$set:{likenum:NumberInt(1001)}});

    3)批量修改

    更新所有用戶為 1003 的用戶的昵稱為 凱撒大帝 。

    //默認(rèn)只修改第一條數(shù)據(jù) db.comment.update({userid:"1003"},{$set:{nickname:"凱撒2"}}) //修改所有符合條件的數(shù)據(jù) db.comment.update({userid:"1003"},{$set:{nickname:"凱撒大帝"}},{multi:true})

    4)列值增長(zhǎng)的更新

    如果我們想實(shí)現(xiàn)對(duì)某列值在原有值的基礎(chǔ)上進(jìn)行增加或減少,可以使用 $inc 運(yùn)算符來(lái)實(shí)現(xiàn)。

    需求:對(duì)3號(hào)數(shù)據(jù)的點(diǎn)贊數(shù),每次遞增1

    db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}});

    4.刪除文檔

    語(yǔ)法結(jié)構(gòu)

    db.集合名稱.remove(條件)

    刪除全部數(shù)據(jù)(慎用)

    db.comment.remove({});

    刪除id為1的數(shù)據(jù)

    db.comment.remove({_id:"1"});

    4.文檔的分頁(yè)查詢

    1. count查詢

    語(yǔ)法結(jié)構(gòu)

    db.collection.count(query, options)

    【示例】

    1)統(tǒng)計(jì)所有記錄數(shù)

    db.comment.count()

    2)按條件查詢

    db.comment.count({userid:"1003"})

    2. 分頁(yè)列表查詢

    語(yǔ)法結(jié)構(gòu)

    db.collection.find().limit(NUMBER).skip(NUMBER)

    【示例】

    1)返回指定條數(shù),limit默認(rèn)20

    db.comment.find().limit(3)

    2)跳過(guò)指定條數(shù),默認(rèn)值0

    db.comment.find().skip(3)

    3)分頁(yè)需求

    //第一頁(yè) db.comment.find().skip(0).limit(2) //第二頁(yè) db.comment.find().skip(2).limit(2) //第三頁(yè) db.comment.find().skip(4).limit(2)

    3.排序查詢

    語(yǔ)法結(jié)構(gòu)

    db.collection.find().sort({KEY:1}) 或 db.集合名稱.find().sort(排序方式)

    sort()方法進(jìn)行排序,使用1和-1來(lái)指定排序的方式,1為升序排列,-1為降序排列

    【示例】

    對(duì)userid降序排列,并對(duì)訪問(wèn)量進(jìn)行升序排列

    db.comment.find().sort({userid:-1,likenum:1})

    提示:

    skip(), limilt(), sort()三個(gè)放在一起執(zhí)行的時(shí)候,執(zhí)行的順序是先 sort(), 然后是 skip(),最后是顯示的 limit(),和命令編寫順序無(wú)關(guān)。

    5.文檔的高級(jí)查詢

    1.正則查詢/模糊查詢

    語(yǔ)法格式

    db.collection.find({field:/正則表達(dá)式/}) 或 db.集合.find({字段:/正則表達(dá)式/})

    提示:正則表達(dá)式是js的語(yǔ)法,直接量的寫法。

    【示例】

    1)查詢包含"開水"的所有文檔

    db.comment.find({content:/開水/})

    2)查看評(píng)論內(nèi)容中以“專家”開頭的。

    db.comment.find({content:/^專家/})

    2.比較查詢

    <, <=, >, >= 這個(gè)操作符也是很常用的,格式如下:

    db.集合名稱.find({ "field" : { $gt: value }}) // 大于: field > value db.集合名稱.find({ "field" : { $lt: value }}) // 小于: field < value db.集合名稱.find({ "field" : { $gte: value }}) // 大于等于: field >= value db.集合名稱.find({ "field" : { $lte: value }}) // 小于等于: field <= value db.集合名稱.find({ "field" : { $ne: value }}) // 不等于: field != value

    【示例】

    查詢?cè)u(píng)論數(shù)大于700的

    db.comment.find({likenum:{$gte:NumberInt(700)}});

    3.包含查詢

    包含使用$in操作符。示例:查詢?cè)u(píng)論的集合中userid字段包含1003或1004的文檔

    db.comment.find({userid:{$in:["1003","1004"]}})

    不包含使用$nin操作符。 示例:查詢?cè)u(píng)論集合中userid字段不包含1003和1004的文檔

    db.comment.find({userid:{$nin:["1003","1004"]}})

    4.條件連接查詢

    同事滿足兩個(gè)條件,(相當(dāng)于SQL的and)

    $and:[ { },{ },{ } ]

    【示例】查詢?cè)u(píng)論集合中l(wèi)ikenum大于等于700 并且小于2000的文檔:

    db.comment.find({$and:[{likenum:{$gte:NumberInt(700)}},{likenum:{$lt:NumberInt(2000)}}]})

    兩個(gè)條件是或者關(guān)系,(相當(dāng)于SQL的or)

    $or:[ { },{ },{ } ]

    【示例】查詢?cè)u(píng)論集合中userid為1003,或者點(diǎn)贊數(shù)小于1000的文檔記錄

    db.comment.find({$or:[ {userid:"1003"} ,{likenum:{$lt:1000} }]})

    6.總結(jié)

    選擇切換數(shù)據(jù)庫(kù):use articledb 插入數(shù)據(jù):db.comment.insert({bson數(shù)據(jù)}) 查詢所有數(shù)據(jù):db.comment.find(); 條件查詢數(shù)據(jù):db.comment.find({條件}) 查詢符合條件的第一條記錄:db.comment.findOne({條件}) 查詢符合條件的前幾條記錄:db.comment.find({條件}).limit(條數(shù)) 查詢符合條件的跳過(guò)的記錄:db.comment.find({條件}).skip(條數(shù)) 修改數(shù)據(jù):db.comment.update({條件},{修改后的數(shù)據(jù)}) 或db.comment.update({條件},{$set:{要修改部分的字段:數(shù)據(jù)}) 修改數(shù)據(jù)并自增某字段值:db.comment.update({條件},{$inc:{自增的字段:步進(jìn)值}}) 刪除數(shù)據(jù):db.comment.remove({條件}) 統(tǒng)計(jì)查詢:db.comment.count({條件}) 模糊查詢:db.comment.find({字段名:/正則表達(dá)式/}) 條件比較運(yùn)算:db.comment.find({字段名:{$gt:值}}) 包含查詢:db.comment.find({字段名:{$in:[1,值2]}})或db.comment.find({字段名:{$nin:[1,值2]}}) 條件連接查詢:db.comment.find({$and:[{條件1},{條件2}]})或db.comment.find({$or:[{條件1},{條件2}]})

    告誡自己
    多學(xué)習(xí),多做筆記,筆記很重要,不然3天過(guò)后,回來(lái)看,真的會(huì)忘記。

    總結(jié)

    以上是生活随笔為你收集整理的第二章节 MongoDB的基本命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。