九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
NodeJS+Express+MongoDB

一、MongoDB

MongoDB是開(kāi)源,高性能的NoSQL數(shù)據(jù)庫(kù);支持索引、集群、復(fù)制和故障轉(zhuǎn)移、各種語(yǔ)言的驅(qū)動(dòng)程序豐富;高伸縮性;
MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。

官網(wǎng)地址:http://www.mongodb.org/

github:https://github.com/mongodb/

API Docs:http://docs.mongodb.org/manual/

nodejs驅(qū)動(dòng):https://github.com/mongodb/node-mongodb-native

1.1、安裝MongoDB

下載地址:http://www.mongodb.org/downloads

下載成功后點(diǎn)擊msi文件直接安裝,這里以win7_64位的操作系統(tǒng)為例。

1.1.1、配置運(yùn)行環(huán)境

1)、創(chuàng)建存放數(shù)據(jù)的文件夾

在任意沒(méi)有中文的目錄下新建文件夾,如c:\data,在文件夾下存放MongoDB數(shù)據(jù)庫(kù)文件與日志文件,如:

c:\data\db用于存放mongodb的數(shù)據(jù)文件

c:\data\log用于存放mongodb的日志文件

2)、創(chuàng)建配置文件

打開(kāi)MongoDB的安裝目錄如“C:\Program Files\MongoDB\Server\3.4\bin”,并在此目錄下新建一個(gè)mongo.config文件,文件內(nèi)容如下:

##數(shù)據(jù)庫(kù)目錄##dbpath=C:\data\db##日志輸出文件##logpath=C:\data\log\db.log

3) 、安裝Windows服務(wù)

使用cmd進(jìn)入命令行

使用cd切換目錄到安裝目錄下,如:cd  C:\Program Files\MongoDB\Server\3.4\bin

安裝MongoDB服務(wù)且指定配置文件,如:

mongod --config "C:\Program Files\MongoDB\Server\3.4\bin\mongo.config" --install

4)、錯(cuò)誤處理

如果運(yùn)行過(guò)程中提示“無(wú)法定位程序輸入點(diǎn)ucrtbase.terminate于動(dòng)態(tài)鏈接庫(kù)api-ms-win-crt-runtime-|1-1-0.dll”錯(cuò)誤,請(qǐng)下載安裝“vc_redist.x64”,如果vc redis.x64安裝失敗請(qǐng)先下載補(bǔ)丁(KB2999226)再安裝。

5)、添加環(huán)境變量
在計(jì)算機(jī)->右鍵->高級(jí)->在環(huán)境變量PATH中加入"C:\Program Files\MongoDB\Server\3.4\bin"路徑。

6)、啟動(dòng)服務(wù)
在cmd窗口中運(yùn)行如下命令開(kāi)始服務(wù),也可以在可以在“控制面板\所有控制面板項(xiàng)\管理工具\(yùn)服務(wù)”手動(dòng)開(kāi)啟,注意默認(rèn)是開(kāi)機(jī)就自動(dòng)啟動(dòng)服務(wù)的,可以設(shè)置成手動(dòng)啟動(dòng)。

net start mongodb

停止服務(wù)

net stop mongodb

在cmd中運(yùn)行如下命令

這樣安裝就成功了!

1.1.2、運(yùn)行MongoDB

1)、直接運(yùn)行

如果安裝完成后不想做任何配置,可以直接運(yùn)行,其中mongod.exe是服務(wù),應(yīng)該先啟動(dòng),如:

啟動(dòng)客戶端mongo.exe文件,如:

2)、啟動(dòng)服務(wù)后運(yùn)行

使用net start mongodb或手動(dòng)啟動(dòng)服務(wù)器運(yùn)行客戶端mongo.exe文件。

3)、可視化工具

當(dāng)服務(wù)啟動(dòng)成功后,如果認(rèn)為命令行操作不方便,可以使用robomongo等GUI工具。

官網(wǎng):https://robomongo.org/

 第二項(xiàng)是一個(gè)綠色版的,解壓后在文件夾中找到exe文件直接運(yùn)行即可。

1.2、數(shù)據(jù)庫(kù)操作

1.2.1、創(chuàng)建數(shù)據(jù)庫(kù)與查看數(shù)據(jù)庫(kù)

以下實(shí)例我們創(chuàng)建了數(shù)據(jù)庫(kù)gomall
> use gomall
switched to db gomall
> db
gomall

如果使用GUI工具在連接名稱上右鍵create database也可以創(chuàng)建數(shù)據(jù)庫(kù):

 創(chuàng)建成功后如下所示:

Collections表示集合,類似關(guān)系數(shù)據(jù)庫(kù)中的表。

Functions表示函數(shù),類似關(guān)系數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程與函數(shù)。

Users表示用戶。

document表示記錄,類似關(guān)系數(shù)據(jù)為中的記錄或行。

如果你想查看所有數(shù)據(jù)庫(kù),可以使用 show dbs 命令:
> show dbs

MongoDB 中默認(rèn)的數(shù)據(jù)庫(kù)為 test,如果你沒(méi)有創(chuàng)建新的數(shù)據(jù)庫(kù),集合將存放在 test 數(shù)據(jù)庫(kù)中。

1.2.2、刪除數(shù)據(jù)庫(kù)

> use gomall
switched to db gomall
> db.dropDatabase()
{ "dropped" : "gomall", "ok" : 1 }

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

a)、db.集合.insert(數(shù)據(jù))

這里的數(shù)據(jù)可以是JSON

先打開(kāi)shell腳本編寫的界面,操作如下:

db.products.insert({name:"iphone",price:1988});

從上圖操作可以看出,沒(méi)有去創(chuàng)建“products”集合,其實(shí)通過(guò)插入操作也會(huì)自動(dòng)創(chuàng)建
_id,是mongodb自已生成的,每行數(shù)據(jù)都會(huì)存在,默認(rèn)是ObjectId,可以在插入數(shù)據(jù)時(shí)插入這個(gè)鍵的值(支持mongodb支持的所有數(shù)據(jù)類型) 

查看數(shù)據(jù):db.getCollection('products').find({})

b)、db.表名.save(數(shù)據(jù));

db.products.save({_id:2,name:"HuWei P9",price:2988});

_id可以自已插入、一個(gè)表中不一定要字段都相同,雖然insert和save方法都可以插入數(shù)據(jù),當(dāng)默認(rèn)的“_id”值已存在時(shí),調(diào)用insert方法插入會(huì)報(bào)錯(cuò);而save方法不會(huì),會(huì)更新相同的_id所在行數(shù)據(jù)的信息。

c)、批量添加

mongodb的shell中可以使用javascript腳本,如

for(var i=0;i<5;i++)db.users.save({'_id':i,'name':'zhangguo'+i,'age':i+8});

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

a)、查詢集合中所有數(shù)據(jù):db.集合.find();

db.users.find({name:'zhangguo0'});

b)、按條件查詢(支持多條件):db.集合.find(條件);

db.users.find({name:'zhangguo0',age:9}); 

對(duì)象中的條件要求同時(shí)成立

c)、查詢第一條(支持條件):db.集合.findOne(條件);

d)、限制數(shù)量:db.集合.find().limit(數(shù)量);

e)、跳過(guò)指定數(shù)量:db.表名.find().skip(數(shù)量);

f)、比較查詢
大于:gtlt
大于等于:gtelte
非等于:$ne

db.users.find({age:{'$gt':9}});

查找年齡大于9且小于11歲的

db.users.find({age:{'gt:9,lt':11}});

g)、查詢數(shù)量:db.表名.find().count();

h)、排序:db.表名.find().sort({"字段名":1});

1:表示升序,-1:表示降序

i)、指定字段返回: db.表名.find({},{"字段名":0});  參數(shù)1:返回 0:不返回

1.2.5、修改

前面save在_id字段已存在是就是修改操作,按指定條件修改語(yǔ)法如下:

db.集合.update({"條件字段名":"字段值"},{$set:{"要修改的字段名":"修改后的字段值"}});

db.users.update({age:{'eq':9}},{set:{age:100}});

修改多條:

db.users.updateMany({age:{"gte":10}},{set:{age:30}});

1.2.6、刪除

db.集合.remove(條件);

db.users.remove({age:{'$gte':10}});  刪除年齡>=10歲的數(shù)據(jù)

二、NodeJS訪問(wèn)MongoDB

MongoDB對(duì)許多平臺(tái)都提供驅(qū)動(dòng)可以訪問(wèn)數(shù)據(jù)庫(kù),如C#、Java、Node.js等。這里以Node.js為例。

2.1、安裝MongoDB訪問(wèn)驅(qū)動(dòng)

使用包管理器,在命令行執(zhí)行如下指令:

全局安裝驅(qū)動(dòng)

npm install mongodb -g

在當(dāng)前項(xiàng)目中引入mongodb

npm install mongodb --save

這樣添加驅(qū)動(dòng)就成功了。

2.2、添加數(shù)據(jù)

在項(xiàng)目的根目錄下新建一個(gè)db.js文件,使用Node.js操作MongoDB。

示例代碼:

//引入mongodb模塊,獲得客戶端對(duì)象var MongoClient = require('mongodb').MongoClient;//連接字符串var DB_CONN_STR = 'mongodb://localhost:27017/gomall';    //定義函數(shù)表達(dá)式,用于操作數(shù)據(jù)庫(kù)并返回結(jié)果var insertData = function(db, callback) {      //獲得指定的集合     var collection = db.collection('users');    //插入數(shù)據(jù)    var data = [{_id:7,"name":'rose',"age":21},{_id:8,"name":'mark',"age":22}];    collection.insert(data, function(err, result) {         //如果存在錯(cuò)誤        if(err)        {            console.log('Error:'+ err);            return;        }         //調(diào)用傳入的回調(diào)方法,將操作結(jié)果返回        callback(result);    });}//使用客戶端連接數(shù)據(jù),并指定完成時(shí)的回調(diào)方法MongoClient.connect(DB_CONN_STR, function(err, db) {    console.log("連接成功!");    //執(zhí)行插入數(shù)據(jù)操作,調(diào)用自定義方法    insertData(db, function(result) {        //顯示結(jié)果        console.log(result);        //關(guān)閉數(shù)據(jù)庫(kù)        db.close();    });});

運(yùn)行結(jié)果:

連接成功!{ result: { ok: 1, n: 2 },  ops:    [ { _id: 7, name: 'rose', age: 21 },     { _id: 8, name: 'mark', age: 22 } ],  insertedCount: 2,  insertedIds: [ 7, 8 ] }

2.3、修改數(shù)據(jù)

示例代碼:

//引入mongodb模塊,獲得客戶端對(duì)象var MongoClient = require('mongodb').MongoClient;//連接字符串var DB_CONN_STR = 'mongodb://localhost:27017/gomall';    //定義函數(shù)表達(dá)式,用于操作數(shù)據(jù)庫(kù)并返回結(jié)果var updateData = function(db, callback) {      //獲得指定的集合     var collection = db.collection('users');    //要修改數(shù)據(jù)的條件,>=10歲的用戶    var  where={age:{"$gte":10}};    //要修改的結(jié)果    var set={$set:{age:95}};    collection.updateMany(where,set, function(err, result) {         //如果存在錯(cuò)誤        if(err)        {            console.log('Error:'+ err);            return;        }         //調(diào)用傳入的回調(diào)方法,將操作結(jié)果返回        callback(result);    });}//使用客戶端連接數(shù)據(jù),并指定完成時(shí)的回調(diào)方法MongoClient.connect(DB_CONN_STR, function(err, db) {    console.log("連接成功!");    //執(zhí)行插入數(shù)據(jù)操作,調(diào)用自定義方法    updateData(db, function(result) {        //顯示結(jié)果        console.log(result);        //關(guān)閉數(shù)據(jù)庫(kù)        db.close();    });});

運(yùn)行結(jié)果:

連接成功!{ result: { n: 5, nModified: 5, ok: 1 }

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

示例代碼:

//引入mongodb模塊,獲得客戶端對(duì)象var MongoClient = require('mongodb').MongoClient;//連接字符串var DB_CONN_STR = 'mongodb://localhost:27017/gomall';    //定義函數(shù)表達(dá)式,用于操作數(shù)據(jù)庫(kù)并返回結(jié)果var findData = function(db, callback) {      //獲得指定的集合     var collection = db.collection('users');    //要查詢數(shù)據(jù)的條件,<=10歲的用戶    var  where={age:{"$lte":10}};    //要顯示的字段    var set={name:1,age:1};    collection.find(where,set).toArray(function(err, result) {         //如果存在錯(cuò)誤        if(err)        {            console.log('Error:'+ err);            return;        }         //調(diào)用傳入的回調(diào)方法,將操作結(jié)果返回        callback(result);    });}//使用客戶端連接數(shù)據(jù),并指定完成時(shí)的回調(diào)方法MongoClient.connect(DB_CONN_STR, function(err, db) {    console.log("連接成功!");    //執(zhí)行插入數(shù)據(jù)操作,調(diào)用自定義方法    findData(db, function(result) {        //顯示結(jié)果        console.log(result);        //關(guān)閉數(shù)據(jù)庫(kù)        db.close();    });});

運(yùn)行結(jié)果:

連接成功![ { _id: 0, name: 'zhangguo0', age: 8 },  { _id: 1, name: 'zhangguo1', age: 9 } ]

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

 示例代碼:

//引入mongodb模塊,獲得客戶端對(duì)象var MongoClient = require('mongodb').MongoClient;//連接字符串var DB_CONN_STR = 'mongodb://localhost:27017/gomall';    //定義函數(shù)表達(dá)式,用于操作數(shù)據(jù)庫(kù)并返回結(jié)果var findData = function(db, callback) {      //獲得指定的集合     var collection = db.collection('users');    //要?jiǎng)h除數(shù)據(jù)的條件,_id>2的用戶刪除    var  where={_id:{"$gt":2}};    collection.remove(where,function(err, result) {         //如果存在錯(cuò)誤        if(err)        {            console.log('Error:'+ err);            return;        }         //調(diào)用傳入的回調(diào)方法,將操作結(jié)果返回        callback(result);    });}//使用客戶端連接數(shù)據(jù),并指定完成時(shí)的回調(diào)方法MongoClient.connect(DB_CONN_STR, function(err, db) {    console.log("連接成功!");    //執(zhí)行插入數(shù)據(jù)操作,調(diào)用自定義方法    findData(db, function(result) {        //顯示結(jié)果        console.log(result);        //關(guān)閉數(shù)據(jù)庫(kù)        db.close();    });});

運(yùn)行結(jié)果:

連接成功!{ result: { n: 4, ok: 1 },

三、NodeJS+Express+MongoDB示例

四、示例下載

 git:https://coding.net/u/zhangguo5/p/NodeJS002/git

 

 

 

 

 

 

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Node.JS實(shí)戰(zhàn)47:MongoDB???大型項(xiàng)目數(shù)據(jù)庫(kù)首選
MongoDB最簡(jiǎn)單的入門教程之二 使用nodejs訪問(wèn)MongoDB
mongodb 判斷是否存在
NoSQL之mongoDB
nodejs基礎(chǔ)-mongodb使用
mongoose常用操作
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服