柚子快報(bào)激活碼778899分享:數(shù)據(jù)庫 MongoDb簡單使用
柚子快報(bào)激活碼778899分享:數(shù)據(jù)庫 MongoDb簡單使用
介紹
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。
它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是它支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。
MongoDB服務(wù)端可運(yùn)行在Linux、Windows平臺(tái),支持32位和64位應(yīng)用,默認(rèn)端口為27017。 推薦運(yùn)行在64位平臺(tái),因?yàn)镸ongoDB在32位模式運(yùn)行時(shí)支持的最大文件尺寸為2GB。
啟動(dòng)mongodb
點(diǎn)開mongodb的安裝目錄的bin文件目錄
?
在此目錄下打開cmd
?輸入mongod
?再使用navicat進(jìn)行連接
?
?
數(shù)據(jù)庫命令?
show?dbs 顯示所有數(shù)據(jù)庫?
?切換到指定的數(shù)據(jù)庫 如果數(shù)據(jù)庫不存在則會(huì)自動(dòng)創(chuàng)建 use locals
?顯示當(dāng)前所在的數(shù)據(jù)庫 db
?刪除當(dāng)前數(shù)據(jù)庫 db.dropDatabase()
?集合命令
?創(chuàng)建集合 db.createCollection('strArr')
?顯示當(dāng)前數(shù)據(jù)庫中的所有集合 show collections
?刪除某個(gè)集合 db.intArr.drop()
?重命名集合 db.intArr.renameCollection('numberArr')
?文檔命令
查詢文檔 db.集合名.find(查詢條件對(duì)象) __id是 mongodb 自動(dòng)生成的唯一編號(hào) 用來唯一標(biāo)識(shí)文檔
?
?
?
?
插入文檔 db.集合名.insert(插入對(duì)象)
?
?
更新文檔 db.集合名.update(查詢條件對(duì)象,新的對(duì)象) 上面這種方式會(huì)直接用新的對(duì)象代替原有的對(duì)象數(shù)據(jù),如果只想更新指定屬性請(qǐng)用下面的方式 db.集合名.update(查詢條件,{$set:{key:value}})
?
?
刪除文檔 db.集合名.remove(查詢條件對(duì)象)
?
?使用node.js連接mongodb
首先先在node中安裝mongoose
npm i mongoose
?
//導(dǎo)入 mongoose
const mongo = require('mongoose')
//連接mongodb服務(wù)
mongo.connect('mongodb://127.0.0.1:27017/bilibili')
//設(shè)置回調(diào)
//設(shè)置成功的回調(diào)
mongo.connection.once('open', () => {
console.log('連接成功');
})
//設(shè)置失敗回調(diào)
mongo.connection.on('error', () => {
console.log('連接失敗');
})
//設(shè)置關(guān)閉回調(diào)
mongo.connection.on('close', () => {
console.log('連接關(guān)閉');
})
支持的字段類型
??
插入文檔
//導(dǎo)入 mongoose
const mongo = require('mongoose')
//連接mongodb服務(wù)
mongo.connect('mongodb://127.0.0.1:27017/bilibili')
//設(shè)置回調(diào)
//設(shè)置成功的回調(diào)
mongo.connection.once('open', () => {
console.log('連接成功');
//創(chuàng)建文檔的結(jié)構(gòu)對(duì)象
//設(shè)置集合中文檔的結(jié)構(gòu) 屬性以及屬性值的類型 也就是指定這個(gè)文檔要存的數(shù)據(jù)類型和結(jié)構(gòu)
let bookSchema = mongo.Schema({
name: String,
author: String,
price: Number
});
//創(chuàng)建模型對(duì)象 對(duì)文檔操作的封裝對(duì)象
/**
* 參數(shù)說明
* @books: 文檔名
* @bookSchema: 文檔結(jié)構(gòu)對(duì)象
*
*/
let booKModel = mongo.model('books', bookSchema);
console.log(booKModel);
//新增
booKModel.create({
name: '三國演義',
author: '羅貫中',
price: 29
})
})
//設(shè)置失敗回調(diào)
mongo.connection.on('error', () => {
console.log('連接失敗');
})
//設(shè)置關(guān)閉回調(diào)
mongo.connection.on('close', () => {
console.log('連接關(guān)閉');
})
?有兩條是因?yàn)橹坝羞^一次測(cè)試
刪除文檔
先在庫里面存入一些測(cè)試數(shù)據(jù)
?單條刪除
//批量刪除
booKModel.deleteMany({
name: '西游記'
}).then((err, data) => {
if (err) {
console.log(err)
return;
}
console.log(data);
})
單個(gè)刪除和批量刪除結(jié)構(gòu)一致,只是方法變?yōu)閐eleteOne?
更新文檔
批量更新?
//批量修改
booKModel.updateMany({
name: '西游記'
}, { price: 999 }).then((err, data) => {
if (err) {
console.log(err)
return;
}
console.log(data);
})
單個(gè)更新和批量更新結(jié)構(gòu)一致,只是方法變?yōu)閡pdateOne
?查詢文檔
//查詢所有
booKModel.find().then((err, data) => {
if (err) {
console.log(err)
return;
}
console.log(data);
})
?條件查詢
?
柚子快報(bào)激活碼778899分享:數(shù)據(jù)庫 MongoDb簡單使用
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。