MongoDB快速入門

MongoDB快速入門

MongoDB.png

一、MongoDB

  • 簡介

    MongoDB是由C++語言編寫的介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。

    它不支持sql語句,對于字段沒有限定,創(chuàng)建表比較靈活,插入數(shù)據(jù)相對更方便。

    而關(guān)系型數(shù)據(jù)庫則支持sql語句,對于字段有嚴(yán)格的限定,創(chuàng)建表比較麻煩,但查詢數(shù)據(jù)時更為便捷。

  • 適用場景

    1. 網(wǎng)站數(shù)據(jù):MongoDB 非常適合實(shí)時的插入,更新與查詢,并具備網(wǎng)站實(shí)時數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性。

    2. 緩存:由于性能很高,MongoDB 也適合作為信息基礎(chǔ)設(shè)施的緩存層。

    3. 大尺寸,低價值的數(shù)據(jù)。

    4. 高伸縮性的場景:MongoDB 非常適合由數(shù)十或數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫。

    5. 用于對象及 JSON 數(shù)據(jù)的存儲:MongoDB 的 BSON 數(shù)據(jù)格式非常適合文檔化格式的存儲及查詢。

二、安裝配置

  • 下載安裝包

    在mongodb官網(wǎng)下載該安裝包,windows系統(tǒng)下載地址

  • 開啟數(shù)據(jù)庫服務(wù)器

    mongod --dbpath c:\data\db(c:\data\db為數(shù)據(jù)存放的位置)

    提示:占用27017端口,表示安裝成功

    27017.jpg
  • 接著配置環(huán)境變量

    默認(rèn)安裝目錄:C:\Program Files\MongoDB\Server\3.2\bin

  • 配置完成后,在cmd中接著運(yùn)行mongod --dbpath c:\data\db

    提示27017結(jié)尾的命令,表示配置成功

  • 重命名表(聚集集合)

    db.goodsList.renameCollection("goodsLists")

三、Mongo常用命令

  • 數(shù)據(jù)庫的操作
操作 命令
開啟數(shù)據(jù)庫服務(wù) mongod --dbpath c:\data\db
進(jìn)入數(shù)據(jù)庫 mongo
查看數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫 show dbs
創(chuàng)建或切換數(shù)據(jù)庫 use 數(shù)據(jù)庫名
查看當(dāng)前使用的數(shù)據(jù) db或者db.getName()
  • 表的操作
操作 命令
創(chuàng)建表 db.createCollection(“表名”)
獲取數(shù)據(jù)庫中所有的表 db.getCollectionNames()
使用某一張表 db.getCollection(“表名”)
刪除某一張表 db.表名.drop()
  • 增加

    添加字段:db.表名.save({字段})

    eg:db.user.save({name:”lxc”,age:18,sex:”女”})

  • 刪除

    刪除所有字段:db.表名.remove({})

    刪除指定字段:db.表名.remove({字段})

  • 修改

    修改字段:db.表名.update({字段},{$set:{字段}})

    eg:db.user.update({name:”lxc”},{$set:{sex:”男”}})

    在原來的基礎(chǔ)上修改:db.表名.update({字段},{$inc:{字段(數(shù)字)}})

    eg:db.user.update({name:”lxc”},{$inc:{age:10}})

    此時,用戶lxc的年齡在原來的18基礎(chǔ)上增加了10,變?yōu)榱?8.

  • 查詢(以user表為例)

操作 命令
查找表中所有數(shù)據(jù) db.表名.find()
統(tǒng)計表中的數(shù)據(jù)條數(shù) db.表名.find().count()
控制查找后顯示n條數(shù)據(jù) db.表名.find().limit(n)
顯示查找結(jié)果的第一項 db.表名.findOne({age:18})
跳過搜到結(jié)果中的前n條數(shù)據(jù) db.user.find().skip(n)
跳過搜到結(jié)果中的前n條數(shù)據(jù),顯示m條 db.user.find().skip(n).limit(m)[1]
查找指定字段(去重) db.表名.fistinct({age})
eg:查找用戶表中的年齡: db.user.distinct(“age”)—[18,21,40,15,30,44]
查找滿足某個字段的記錄 db.user.find(name:”lxc”)
查找年齡大于30的記錄 db.user.find({age:{$gt:30}})
查找年齡小于等于30的記錄 db.user.find({age:{$lte:30}})
查找年齡小于20或大于30的記錄 db.user.find({age:{$lt:20,$gt:30}})
模糊查詢:查找name中有l(wèi)xc的用戶的記錄 db.user.find({name:/lxc/})
查找name字段中,首字符是L的記錄 db.user.find({name:/^L/})
查找name字段中,尾字符是L的記錄 db.user.find({name:/^$/})
查找所有數(shù)據(jù),但只顯示name字段 db.user.find({},{name:1,_id:0})[2]
按照age字段升序排序 db.user.find().sort({age:1})
按照age字段降序排序 db.user.find().sort({age:-1})
…… ……

四、在Node中操作Mongo

  1. 初始化安裝

npm init -y

cnpm install mongodb -S

const mongoClient = require("mongodb").MongoClient;
  1. 創(chuàng)建連接方式

    const url = "mongodb://127.0.0.1:27017";
    
  2. 創(chuàng)建連接的數(shù)據(jù)庫

    const db_name = "user"
    
  3. 連接

    mongoClient.connect(url,(err,client) => {
        if(err){
             console.log("連接失敗");  
        }else{
            console.log("連接成功");
        }
    })
    
  4. 連接數(shù)據(jù)庫和表

    這里定義的表名,不區(qū)分大小寫;即使定義為大寫,也會轉(zhuǎn)為小寫,而一旦數(shù)據(jù)庫中原來創(chuàng)建的表名為大寫,在這里要通過Node進(jìn)行操作時,則會創(chuàng)建一個新表。

    var user = client.db(db_name).collection("user");
    
  5. 增刪改查

    //增
    user.save({name:"lxc",age:18,sex:"男"},(err,data) => {
        console.log(err,data);
    })
    
    //改
    user.update({name:"lxc"},{$set:{age:28}},(err) => {})
    
    //查
    user.find().toArray((err,data) => {
        console.log(data);
    })
    
    //刪
    user.remove({name:"lxc"},(err,data) => {})
    

for(var i = limit*(page - 1); i < Math.min(limit * page , 100) ; i++){}

每次請求的數(shù)據(jù) : db.user.find().skip((page - 1) * limit).limit(limit)


  1. limit 每頁顯示的數(shù)據(jù)條數(shù) ; 總頁數(shù) 100:Math.ceil(總條目數(shù) / limit) = 10 ?

  2. 第一個參數(shù)為空{(diào)}時代表查詢所有 , 需要篩選時 , 在第二個參數(shù)中設(shè)置條件 ; 默認(rèn)除了name字段還會顯示_id. ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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