node 操縱MongoDB數(shù)據(jù)庫

mac安裝

一、官網(wǎng)下載安裝包:
https://www.mongodb.com/download-center/community?jmp=nav
二、下載后解壓壓縮包更名為mongodb
三、將解壓好的壓縮包移動到/usr/local目錄下
四、打開終端,輸入命令行export PATH=/usr/local/mongodb/bin:$PATH回車,這樣以后啟動mongodb就不用輸很長的路徑名。
打開終端,輸入sudo mkdir -p /data/db,即可新建用于保存數(shù)據(jù)庫文件。data/db文件夾被建于MAC的根目錄中。
默認(rèn)使用這個文件夾保存,如果想自行設(shè)置,可進入usr/local/mongodb/bin后啟動終端,使用./mongod --dbpath=/你的路徑 指定你的文件夾。

啟動

sudo mongod
如果想修改默認(rèn)的數(shù)據(jù)存儲目錄路徑
sudo mongod --dbpath=數(shù)據(jù)存儲目錄路徑

單擊一下終端,command+n新建一個終端,輸入cd /usr/local/mongodb/bin回車,進入mongodb bin文件夾,隨后輸入./mongo,回車,即可

exit退出連接

停止

在操作數(shù)據(jù)庫的終端輸入use admin后再輸入db.shutdownServer()
或在開啟服務(wù)的控制它control + c關(guān)閉

基本命令

show dbs // 查看顯示所有數(shù)據(jù)庫
db // 查看當(dāng)前操作的數(shù)據(jù)庫
use 數(shù)據(jù)庫名 // 切換到指定的數(shù)據(jù)(如果沒有會新建)

node中使用mongodb

一、使用官方的mongodb包來操作
https://github.com/mongodb/node-mongodb-native
二、使用第三方mongoose來操作mongodb數(shù)據(jù)庫
https://mongoosejs.com/
例:

const mongoose = require('mongoose');
// 連接mongodb數(shù)據(jù)庫
mongoose.connect('mongodb://localhost:27017/test', {
    useNewUrlParser: true
});
// 創(chuàng)建模型
const Cat = mongoose.model('Cat', {
    name: String
});
實例化一個cat
const kitty = new Cat({ name: 'Zildjian' });
// 持久化保存kitty實例
kitty.save().then(() => console.log('meow'));

mongoose詳細操縱數(shù)據(jù)庫

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost/student', {
    useNewUrlParser: true
});

// 設(shè)計文檔結(jié)構(gòu)
const userSchema = new Schema({
    username: {
        type: String,
        required: true // 必須有
    },
    password: {
        type: String,
        required: true
    },
    email: {
        type: String
    }
})
// 將文檔發(fā)布為模型
// 第一個參數(shù)傳入一個大寫名詞單數(shù)字符串用來表示集合名
    // mongoose會自動將大寫名詞的字符串生成小寫復(fù)數(shù)的集合名稱
    // 例如這的User會最終變?yōu)閡sers集合名稱
// 第二個參數(shù):架構(gòu) Schema
// 返回值:模型構(gòu)造函數(shù)
const User = mongoose.model('User', userSchema)

增加數(shù)據(jù)

const admin = new User({
    username: 'admin',
    password: '123456',
    email: 'admin@admin.com',
})

admin.save().then(() => console.log('保存成功'));

查詢所有

User.find((err, ret) => {
    if (err) {
        console.log('查詢失敗')
    } else {
        console.log(ret)
    }
})

查詢匹配項(返回數(shù)組)

User.find({
    username: 'zs'
}, (err, ret) => {
    if (err) {
        console.log('查詢失敗')
    } else {
        console.log(ret)
    }
})

查詢一條(按條件查詢返回json)

User.findOne({
    username: 'zs'
}, (err, ret) => {
    if (err) {
        console.log('查詢失敗')
    } else {
        console.log(ret)
    }
})

查詢第一條(返回json)

User.findOne((err, ret) => {
    if (err) {
        console.log('查詢失敗')
    } else {
        console.log(ret)
    }
})

刪除符合條件的所有(返回json)

User.deleteMany({
    username: 'admin'
}, (err, ret) => {
    if (err) {
        console.log('刪除失敗')
    } else {
        console.log('刪除成功', ret)
    }
})

刪除符合條件的一條(返回json)

User.deleteOne({
    username: 'admin'
}, (err, ret) => {
    if (err) {
        console.log('刪除失敗')
    } else {
        console.log('刪除成功', ret)
    }
})

更新

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

相關(guān)閱讀更多精彩內(nèi)容

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