mongodb

mongoDB下載地址:mongodb:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.6-signed.msi

  1. 找到安裝目錄下的bin目錄,復(fù)制路徑,添加到環(huán)境變量中

  2. 在非系統(tǒng)盤(pán)創(chuàng)建空mongoDB文件夾并創(chuàng)建空的日志文件夾以及創(chuàng)建空的數(shù)據(jù)庫(kù)文件夾

比如:  D:\mongoDB      ->  總數(shù)據(jù)庫(kù)文件夾
       D:\mongoDB\db   ->  空數(shù)據(jù)庫(kù)存儲(chǔ)文件夾
       D:\mongoDB\log  ->  空日志文件夾
  1. mongod掛載成Windows上作為一個(gè)服務(wù)運(yùn)行:此電腦 > 鼠標(biāo)右鍵 > 管理 > 服務(wù)和應(yīng)用程序 > 服務(wù)
    mongod                                      ->  mongod指令
    --dbpath="D:\mongoDB\db"                    ->  指定數(shù)據(jù)庫(kù)存儲(chǔ)路徑
    --logpath="D:\mongoDB\log\mongodb.log"      ->  指定日志文件輸出路徑
    --install                                   ->  在windows上安裝mongod服務(wù)
    --serviceName="MongoDB"                     ->  指定服務(wù)名稱
    // 在CMD中運(yùn)行下方指令
    // 64位操作系統(tǒng)命令:
        mongod --dbpath="D:\mongoDB\db" --logpath="D:\mongoDB\log\mongodb.log" --install --serviceName="MongoDB Server"
    // 32位操作系統(tǒng)或者安裝mongodb Vue(可視數(shù)據(jù)庫(kù))時(shí)的命令:
    --storageEngine="mmapv1"                    ->  存儲(chǔ)引擎必須使用mmapv1 單個(gè)集合最大數(shù)據(jù)數(shù)為2G (老的儲(chǔ)存引擎)
        mongod --storageEngine="mmapv1" --dbpath="D:\mongoDB\db" --logpath="D:\mongoDB\log\mongodb.log" --install --serviceName="MongoDB Server"
  1. 開(kāi)啟/關(guān)閉服務(wù): 在CMD中運(yùn)行下方命令:重點(diǎn)
    net start mongodb   ->  開(kāi)啟服務(wù)
    net stop mongodb    ->  關(guān)閉服務(wù)
    sc delete xxx       ->  卸載服務(wù)(xxx可代表計(jì)算機(jī)中的任何服務(wù)名稱)
  1. mongodb操作指令:重點(diǎn)
    mongo               ->  進(jìn)入數(shù)據(jù)庫(kù)管理模式
    exit                ->  退出數(shù)據(jù)庫(kù)管理模式
  1. 數(shù)據(jù)庫(kù)命令:重點(diǎn)

    1. 顯示所有的數(shù)據(jù)庫(kù)列表
      show dbs -> 查看其服務(wù)器中所有數(shù)據(jù)庫(kù)
    2. 創(chuàng)建數(shù)據(jù)庫(kù),進(jìn)入,切換數(shù)據(jù)庫(kù)
      use xxx -> 如果該數(shù)據(jù)庫(kù)存在則進(jìn)入該數(shù)據(jù)庫(kù),如果不存在該數(shù)據(jù)庫(kù)則創(chuàng)建該數(shù)據(jù)庫(kù)
    3. 查看當(dāng)前數(shù)據(jù)庫(kù)
      db -> 查看當(dāng)前所在數(shù)據(jù)庫(kù)名稱
    4. 刪除數(shù)據(jù)庫(kù): 確保db當(dāng)前指向在當(dāng)前需要?jiǎng)h除的數(shù)據(jù)庫(kù)下
      db.dropDatabase()
  2. 集合命令:重點(diǎn)

    1. 顯示當(dāng)前數(shù)據(jù)庫(kù)中的所有集合
      show collections
    2. 在數(shù)據(jù)庫(kù)下創(chuàng)建一個(gè)集合并插入一條數(shù)據(jù)
      [user] -> 數(shù)據(jù)集合名(mysql中的表)
      db.user.insert(json)
    3. 刪除集合
      [user] -> 數(shù)據(jù)集合名(mysql中的表)
      db.user.drop()
  3. 文檔(數(shù)據(jù)的操作)命令:重點(diǎn)

    1. 新增數(shù)據(jù)
      [user] -> 數(shù)據(jù)集合名(mysql中的表)
      db.user.insert(json || bson) -> 推薦使用該方法
      例如:db.user.insert({ "key": "value" })

      1. 單條添加數(shù)據(jù)時(shí)
        db.user.insertOne({ "key": "value" }) -> 同上方添加方法
      2. 批量添加數(shù)據(jù)時(shí)
        db.user.insertMany([數(shù)組數(shù)據(jù)]) -> 推薦使用該方法
        例如:db.user.insertMany([ { key: value }, { key: value } ])
        db.user.save(json || bson)
        例如:db.user.save({ "key": "value" })
        // insert和save的區(qū)別:
        .insert :  單純的向集合插入一條數(shù)據(jù)    ->  推薦使用該方法
        .save   :  向數(shù)據(jù)庫(kù)中添加一條數(shù)據(jù),如果該數(shù)據(jù)已存在則更新該條數(shù)據(jù)
        
    2. 查詢數(shù)據(jù)
      [user] -> 數(shù)據(jù)集合名(mysql中的表)

      1. 查找當(dāng)前集合中的所有數(shù)據(jù)
        db.user.find()
      2. 查找符合條件的所有數(shù)據(jù)
        db.user.find({ 條件 })
      3. 查找符合條件的第一條數(shù)據(jù): 不常用
        db.user.findOne({ 查詢條件 })
      4. 格式化查詢出來(lái)的數(shù)據(jù): 適用于CMD窗口
        db.user.find().pretty()
    3. 修改數(shù)據(jù)

      [user] -> 數(shù)據(jù)集合名(mysql中的表)

      db.user.update({ 查詢數(shù)據(jù)的條件,如: id: 1 }, { 修改的數(shù)據(jù),如: age: 55 })      -> 不加$set則修改整條數(shù)據(jù)
      查詢id為1的這一條數(shù)據(jù)修改其age的值為55
      db.user.update({ 查詢數(shù)據(jù)的條件,如: id: 1 }, { $set: { age: 999 } })        ->  加了$set, 則修改其中的部分?jǐn)?shù)據(jù)
      

      修改數(shù)組
      查詢id為1的這一條數(shù)據(jù)并向該數(shù)據(jù)中的news數(shù)組中添加一條新數(shù)據(jù),如該數(shù)據(jù)存在則不添加,如數(shù)據(jù)不存在則添加 -> $push則直接添加并不會(huì)查找是否存在該元素
      db.user.update({ 查詢數(shù)據(jù)的條件,如: id: 1 }, { $addToSet: { news: { title: '123465', detail: '123' } } }) -> $addToSet, 則表示向數(shù)組中添加數(shù)據(jù)
      統(tǒng)一給該集合中所有的文檔添加某個(gè)參數(shù):works
      db.user.bulkWrite([{ updateMany:{filter:{}, update:{ $set:{ works: [] } }, upsert:1} }])

    4. 刪除數(shù)據(jù)
      db.user.remove({}) -> 刪除當(dāng)前集合中的所有數(shù)據(jù)
      db.user.remove({ 條件對(duì)象,如: age: 18 }) -> 刪除當(dāng)前集合中的指定的數(shù)據(jù),刪除當(dāng)前集合下的所有age等于18的

  4. 文檔查找高級(jí)命令
    [user] -> 數(shù)據(jù)集合名(mysql中的表)

    1. 查找指定數(shù)據(jù)
      db.user.find({ sex: '女' }) -> 查找user下的所有數(shù)據(jù): 查找集合中為女性的用戶
    2. 查找范圍
      $lte        ->  小于等于
      $lt         ->  小于
      $gte        ->  大于等于
      $gt         ->  大于
      db.user.find({ age: { $lte: 24, $gte: 21 }, sex: '男' }).pretty()        ->  查找user下的所有數(shù)據(jù): 年齡小于等于24歲大于等于21歲的男性用戶
      
    3. 非 -> 很少用到,一般用a項(xiàng)
      db.user.find({ sex: { $ne: '男' } }).pretty() -> 查找user下的所有數(shù)據(jù): 非男性用戶
    4. 取模運(yùn)算查找 -> 很少用到
      db.user.find({ age: { $mod: [2, 0] }}).pretty() -> 查找user下的所有數(shù)據(jù): 年齡 age % 2 === 0 的用戶(偶數(shù))
    5. 枚舉查找(批量:范圍查找)
      db.user.find({ age: { $in: [18,20,21] }}).pretty()         ->  查找user下的所有數(shù)據(jù): 年齡為18/20/21的所有用戶
      非   ->  很少用到
      db.user.find({ age: { $nin: [18,20,21] }}).pretty()         ->  查找user下的所有數(shù)據(jù): 年齡不為18/20/21的所有用戶
      
    6. 查找數(shù)據(jù)下的某個(gè)屬性,數(shù)組的個(gè)數(shù)
      db.user.find({ works: { $size: 0 } }) -> 查找user下的所有數(shù)據(jù): works數(shù)組length為0的所有用戶
    7. 查找數(shù)據(jù)下的某個(gè)屬性是否存在
      db.user.find({ age: { $exists: true } }) -> 查找user下的所有數(shù)據(jù): age屬性存在的用戶
    8. 多條件查詢:或
      db.user.find({ $or: [{ age: 20 }, { sex: '男' }] }) -> 查找user下的所有數(shù)據(jù): age=20或者sex=男 的所有符合其中一項(xiàng)條件的用戶
    9. 模糊查詢
      db.user.find({ name: /小/imxg }) -> 查找user下的所有數(shù)據(jù): name中帶有“小”字的所有數(shù)據(jù)
  5. 文檔其他命令
    [user] -> 數(shù)據(jù)集合名(mysql中的表)

    1. 排序
      1               ->  升序排列
      -1              ->  降序排列
      db.user.find().sort({ fraction: -1, age: 1 })       ->  查找user下的所有數(shù)據(jù): fraction降序排列并且age升序排列
      
    2. 限定輸出多少條數(shù)據(jù)
      db.user.find().limit(3) -> 查找user下的所有數(shù)據(jù): 限定輸出3條數(shù)據(jù)
    3. 限定輸出多少條數(shù)據(jù)
      可做分頁(yè)
      db.user.find().limit(3).skip(3) -> 查找user下的所有數(shù)據(jù): 限定輸出3條數(shù)據(jù)并跳過(guò)前三條數(shù)據(jù)
    4. 查看輸出數(shù)據(jù)條數(shù)
      db.user.find().count() -> 查找user下的所有數(shù)據(jù): 查看輸出數(shù)據(jù)條數(shù)
最后編輯于
?著作權(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ù)。

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