Nodejs學(xué)習(xí)筆記(七)

通過(guò)Nodejs操作MongoDB

安裝MongoDB

安裝MongoDB

Install MongoDB Driver

npm install mongodb

引入MongoDB Driver

var mongo = require('mongodb');

通過(guò)Nodejs創(chuàng)建MongoDB數(shù)據(jù)庫(kù)

1.創(chuàng)建Demo文件:touch createMongodbDemo.js

2.在文件中寫(xiě)入:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  console.log("Database created!");
  db.close();
});

3.運(yùn)行該文件:node createMongodbDemo.js
可以在控制臺(tái)看到:

image.png

4.注意,此時(shí)如果在連接了mongo之后,控制臺(tái)運(yùn)行show databases是看不到創(chuàng)建的mydb這個(gè)數(shù)據(jù)庫(kù)的,因?yàn)樵摂?shù)據(jù)庫(kù)里沒(méi)有collections,目前只能看到adminlocal兩個(gè)數(shù)據(jù)庫(kù)

通過(guò)Nodejs創(chuàng)建Collection

1.將createMongodbDemo.js中的代碼改寫(xiě)如下,使用db.createCollection來(lái)創(chuàng)建collection:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    db.createCollection("customers", function(err, res) {
        if (err) throw err;
        console.log("Collection created");
        db.close();
    })
})

2.運(yùn)行該文件:node createMongodbDemo.js

image.png

3.驗(yàn)證是否創(chuàng)建成功了:

  • 進(jìn)入mongo: mongo

  • 顯示數(shù)據(jù)庫(kù): show databases

    image.png

    說(shuō)明之前的mydb數(shù)據(jù)庫(kù)成功創(chuàng)建了

  • 進(jìn)入mydb數(shù)據(jù)庫(kù):use mydb

  • 顯示collections: show collections

    image.png

    說(shuō)明collection創(chuàng)建成功

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

1.將代碼改寫(xiě)如下,通過(guò)insertOne方法進(jìn)行插入:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var myObj = {
        name: 'wilson',
        age: 22
    }
    db.collection("customers").insertOne(myObj, function(err, res) {
        if (err) throw err;
        console.log("Insert successfully");
        db.close();
    })
})

2.運(yùn)行代碼

3.切換到mydb數(shù)據(jù)庫(kù): use mydb

4.查詢(xún)customers collection中是否插入成功: db.customers.find().pretty()

image.png

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

1.將代碼改寫(xiě)如下,通過(guò)insertMany方法進(jìn)行插入:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var myObjs = [
        {
            name: 'wilson',
            age: 22
        },
        {
            name: 'kathy',
            age: 21
        },
        {
            name: 'curry',
            age: 28
        }
    ]
    db.collection("customers").insertMany(myObjs, function(err, res) {
        if (err) throw err;
        console.log("Insert successfully");
        db.close();
    })
})

2.運(yùn)行代碼

3.查詢(xún)customers collection中是否插入成功: db.customers.find().pretty()

查詢(xún)一條數(shù)據(jù)

1.將代碼改寫(xiě)如下,通過(guò)findOne方法來(lái)進(jìn)行查找:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    db.collection("customers").findOne({"name": "kathy"}, function(err, res) {
        if (err) throw err;
        console.log(res.age);
        db.close();
    })
})

輸出了找到的那條記錄的age。

查詢(xún)多條數(shù)據(jù)

1.將代碼改寫(xiě)如下,通過(guò)find方法來(lái)進(jìn)行查找:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    db.collection("customers").find({}).toArray(function(err, res) {
        if (err) throw err;
        console.log(res);
        db.close();
    })
})

當(dāng)查詢(xún)條件為空時(shí),會(huì)得到所有的記錄。

image.png

2.如果我希望只顯示某些字段該如何處理?比如我不想顯示_id。
通過(guò)find方法的第二個(gè)參數(shù)來(lái)設(shè)置顯示的字段,將上面的代碼改寫(xiě)為:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    db.collection("customers").find({}, {"_id": false}).toArray(function(err, res) {
        if (err) throw err;
        console.log(res);
        db.close();
    })
})

這里{"_id": false}就可以不返回_id字段。

image.png

對(duì)查詢(xún)到的數(shù)據(jù)進(jìn)行排序

1.將代碼改寫(xiě)如下,通過(guò)sort方法來(lái)進(jìn)行排序:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var mySort = { age: 1 };
    db.collection("customers").find().sort(mySort).toArray(function(err, res) {
        if (err) throw err;
        console.log(res);
        db.close();
    })
})

var mySort = { age: 1 };表示按照age字段的升序進(jìn)行排序。如果希望降序進(jìn)行排序,只需要將1改成-1。

?著作權(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)容

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