Node對(duì)MongoDB的簡(jiǎn)單操作

MongoDB

MongoDB的運(yùn)行

  1. 下載、安裝好MongoDB,并在MongoDB的根目錄下創(chuàng)建一個(gè)data目錄,然后在data目錄下創(chuàng)建db目錄 (MongoDB將數(shù)據(jù)目錄存儲(chǔ)在db目錄下,若無(wú)此操作泽西,將無(wú)法運(yùn)行MongoDB)
    image
  2. cd到MongoDB的安裝目錄下的bin目錄中,運(yùn)行
F:\MongoDB\bin\mongod --dbpath F:\data\db
// 具體路徑根據(jù)自己的安裝情況來(lái)
image
  1. 然后雙擊bin目錄下的mongo.exe運(yùn)行MongoDB缰趋,成功運(yùn)行之后訪問(wèn) http://localhost:27017/ 顯示以下提示即為運(yùn)行成功
    image

Node

在項(xiàng)目中安裝MongoDB

npm install mongodb

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

關(guān)鍵語(yǔ)句

insert(document)

參數(shù)說(shuō)明

  • document:需要插入的數(shù)據(jù)捧杉,鍵值對(duì)的形式

代碼

// 引入mongodb模塊
var MongoClient = require('mongodb').MongoClient; 
// 創(chuàng)建要連接的數(shù)據(jù)庫(kù)對(duì)象
var DB_CONN_STR = 'mongodb://localhost:27017/index';

var insertData = function (db, callback) {
    var collection = db.collection('person');  // 連接將要操作的表(person為數(shù)據(jù)庫(kù)index中的一個(gè)表)
    // 要插入的數(shù)據(jù)
    var data = [{
        "name": "Han",
        "age": "21"
    }, {
        "name": "ZLHan",
        "age": "23"
    }];
    // 執(zhí)行插入
    collection.insert(data, function (err, result) {
        if (err) {
            console.log('Error:' + err);
            return;
        }
        callback(result);
    })
}
MongoClient.connect(DB_CONN_STR, function (err, db) {
    console.log('連接成功!');
    insertData(db, function (result) {
        console.log(result);
        db.close();
    })
})

效果展示

以下是Robo 3T下的效果圖

image

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

關(guān)鍵語(yǔ)句

find(query, projection)

參數(shù)說(shuō)明

  • query:
  • projection: 返回結(jié)果秘血,值為0的不反回味抖,值為1的返回,默認(rèn)返回所有鍵如:
{name: 0, _id: 0}  表person有name灰粮、age和_id(默認(rèn)帶有)三個(gè)屬性仔涩,此處只返回age屬性

代碼

// 查詢數(shù)據(jù)
// 引入mongodb模塊
var MongoClient = require('mongodb').MongoClient; 
// 創(chuàng)建要連接的數(shù)據(jù)庫(kù)對(duì)象
var DB_CONN_STR = 'mongodb://localhost:27017/index';

var selectData = function (db, callback) {
    var collection = db.collection('person');  // 連接將要操作的表(person為數(shù)據(jù)庫(kù)index中的一個(gè)表)
    // 查詢條件
    var where = {'name': 'Han'}
    // 查詢
    collection.find(where, {name: 0, _id: 0}).toArray(function (err, result) {
        if (err) {
            console.log('Error:' + err);
            return
        }
        callback(result);
    });
}
MongoClient.connect(DB_CONN_STR, function (err, db) {
    console.log('連接成功!');
    selectData(db, function (result) {
        console.log(result);
        db.close();
    })
})

效果展示

image

更新數(shù)據(jù)

關(guān)鍵語(yǔ)句

update(<query>, <update>, {  
    upsert: <boolean>,  
    multi: <boolean>,  
    writeConcern: <document>  
})

參數(shù)說(shuō)明

  • query: 更新數(shù)據(jù)的條件
  • update: 更新的數(shù)據(jù)粘舟、對(duì)象
  • upsert: (可選)若update對(duì)象不存在熔脂,是否允許插入,默認(rèn)false
  • multi: (可選)是否允許更新由query查詢出的所有記錄柑肴,默認(rèn)false(只更新第一條記錄)
  • writeConcern: (可選)拋出異常的級(jí)別

代碼

// 更新數(shù)據(jù)
// 引入mongodb模塊
var MongoClient = require('mongodb').MongoClient; 
// 創(chuàng)建要連接的數(shù)據(jù)庫(kù)對(duì)象
var DB_CONN_STR = 'mongodb://localhost:27017/index';

var updateData = function (db, callback) {
    var collection = db.collection('person');  // 連接將要操作的表(person為數(shù)據(jù)庫(kù)index中的一個(gè)表)
    // 更新條件
    var where = {'name': 'Han'};
    // 更新數(shù)據(jù)
    var updateData = {$set: {"age" : 222}};
    collection.update(where, updateData, function (err, result) {
        if (err) {
            console.log('Error:' + err);
            return
        }
        callback(result);
    });
}
MongoClient.connect(DB_CONN_STR, function (err, db) {
    console.log('連接成功霞揉!');
    updateData(db, function (result) {
        console.log(result);
        db.close();
    })
})
image

刪除數(shù)據(jù)

關(guān)鍵語(yǔ)句

remove(<query>, <justOne>)

若MongoDB的版本是2.6以后:

remove(<query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

參數(shù)說(shuō)明

  • query :(可選)刪除的文檔的條件。
  • justOne : (可選)如果設(shè)為 true 或 1晰骑,則只刪除一個(gè)文檔适秩。
  • writeConcern :(可選)拋出異常的級(jí)別。

代碼

// 刪除數(shù)據(jù)
// 引入mongodb模塊
var MongoClient = require('mongodb').MongoClient; 
// 創(chuàng)建要連接的數(shù)據(jù)庫(kù)對(duì)象
var DB_CONN_STR = 'mongodb://localhost:27017/index';

var deleteData = function (db, callback) {
    var collection = db.collection('person');  // 連接將要操作的表(person為數(shù)據(jù)庫(kù)index中的一個(gè)表)
    // 刪除條件
    var where = {'name': '小明'};
    // 刪除
    collection.remove(where, function (err, result) {
        if (err) {
            console.log('Error:' + err);
            return
        }
        callback(result);
    });
}
MongoClient.connect(DB_CONN_STR, function (err, db) {
    console.log('連接成功!');
    deleteData(db, function (result) {
        console.log(result);
        db.close();
    })
})

效果展示

原表

image

刪除后

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末秽荞,一起剝皮案震驚了整個(gè)濱河市骤公,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蚂会,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耗式,死亡現(xiàn)場(chǎng)離奇詭異胁住,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)刊咳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)彪见,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人娱挨,你說(shuō)我怎么就攤上這事余指。” “怎么了跷坝?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵酵镜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我柴钻,道長(zhǎng)淮韭,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任贴届,我火速辦了婚禮靠粪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毫蚓。我一直安慰自己占键,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布元潘。 她就那樣靜靜地躺著畔乙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翩概。 梳的紋絲不亂的頭發(fā)上啸澡,一...
    開(kāi)封第一講書(shū)人閱讀 52,807評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音氮帐,去河邊找鬼嗅虏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛上沐,可吹牛的內(nèi)容都是我干的皮服。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼龄广!你這毒婦竟也來(lái)了硫眯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤择同,失蹤者是張志新(化名)和其女友劉穎两入,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體敲才,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡裹纳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了紧武。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剃氧。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阻星,靈堂內(nèi)的尸體忽然破棺而出朋鞍,到底是詐尸還是另有隱情,我是刑警寧澤妥箕,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布滥酥,位于F島的核電站,受9級(jí)特大地震影響畦幢,放射性物質(zhì)發(fā)生泄漏恨狈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一呛讲、第九天 我趴在偏房一處隱蔽的房頂上張望禾怠。 院中可真熱鬧,春花似錦贝搁、人聲如沸吗氏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)弦讽。三九已至,卻和暖如春膀哲,著一層夾襖步出監(jiān)牢的瞬間往产,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工某宪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仿村,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓兴喂,卻偏偏與公主長(zhǎng)得像蔼囊,于是被迫代替她去往敵國(guó)和親焚志。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

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