亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Node學(xué)習(xí)記錄: mongodb

zzzmh / 1367人閱讀

摘要:的邏輯結(jié)構(gòu)是一種層次結(jié)構(gòu),主要由文檔集合數(shù)據(jù)庫(kù)這三部分組成的。文檔由鍵值對(duì)構(gòu)成,像等,它是核心單元,的文檔,相當(dāng)于關(guān)系數(shù)據(jù)庫(kù)中的一行記錄。我們以此為例看它如何使用真實(shí)項(xiàng)目中參考學(xué)習(xí)筆記之的使用入門教程的一些操作命令

簡(jiǎn)介

在說MongoDB數(shù)據(jù)插入操作之前,我們先來簡(jiǎn)單了解下它的數(shù)據(jù)邏輯結(jié)構(gòu)。
MongoDB的邏輯結(jié)構(gòu)是一種層次結(jié)構(gòu),主要由:文檔(document)、集合(collection)、數(shù)據(jù)庫(kù)(database)這三部分組成的。

文檔(document):由鍵/值對(duì)構(gòu)成,像{a:1}{s:"abc"}等,它是MongoDB核心單元,MongoDB的文檔(document),相當(dāng)于關(guān)系數(shù)據(jù)庫(kù)中的一行記錄。

集合(Collection):多個(gè)文檔組成一個(gè)集合(collection),相當(dāng)于關(guān)系數(shù)據(jù)庫(kù)的表。

數(shù)據(jù)庫(kù)(database):多個(gè)集合(collection),邏輯上組織在一起,就是數(shù)據(jù)庫(kù)(database)。

一個(gè)MongoDB實(shí)例支持多個(gè)數(shù)據(jù)庫(kù)(database)。

模式

模型

文檔

快速安裝 安裝 MongoDB

在 Ubuntu 16.04 上安裝 MongoDB 可參考 MongoDB Docs:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org

在 CentOS 7 上安裝 MongoDB 可參考 MongoDB Docs:

$ sudo vi /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
$ sudo yum install -y mongodb-org
工具模塊

Mongoose 它能對(duì)Mongodb進(jìn)行建模操作

安裝及引用 安裝
npm install mongoose
引用mongoose
 var mongoose = require(“mongoose”);
使用mongoose鏈接數(shù)據(jù)庫(kù)
var db = mongoose(“mongodb://user:pass@localhost:port/database”);
示例
var mongoose = require(“mongoose”); 
var db = mongoose.connect(“mongodb://127.0.0.1:27017/test”); 
db.connection.on(“error”, function (error) { 
console.log(“數(shù)據(jù)庫(kù)連接失?。骸?+ error); 
}); 
db.connection.on(“open”, function () { 
console.log(“——數(shù)據(jù)庫(kù)連接成功!——”); 
});
Schema-模式定義

在模式里面我們對(duì)字段進(jìn)行定義,可以定義字段的類型

var mongoose = require("mongoose")

var MovieSchema = new mongoose.Schema({
  doctor.String,
  title: String,
  language: String,
  country: String,
  year: Number,
  summary: String
})
Model - 編譯模型

我們調(diào)用mongoose.model時(shí)候?qū)魅氲腟chema也就是模式進(jìn)行編譯,然后生成構(gòu)造函數(shù)

var mongoose = require("mongoose")
var MovieSchema = require("../shemas/movie")

var Movie = mongoose.model(
  "movie",
  "MovieSchema"
)

module.export = Movie
Documents - 文檔實(shí)例化

有了數(shù)據(jù)的模型以后,要對(duì)文檔實(shí)例化,只需要調(diào)用這個(gè)模型,也就是這個(gè)構(gòu)造函數(shù),然后傳入一條數(shù)據(jù).然后再調(diào)save方法jiu能把這條數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)里面去

var Movie = require("./models/movie")

var movie = new Movie(){
 title: "機(jī)械戰(zhàn)警",
 doctor: "何塞.帕蒂利亞",
 year: 2018
}

movie.save(function (err) {
  if (err) return handleError(err)
})

數(shù)據(jù)庫(kù)的查詢

數(shù)據(jù)庫(kù)的查詢分為批量的,單條的,或者特定條件的查詢

數(shù)據(jù)庫(kù)批量查詢:

只需要調(diào)用模型的find方法

var Movie = require("./models/movie")

app.get("/", function(req, res) {
 Movie
   .find({})
   .exec(function(err, movies) {
     res.render("index", {
       title: "jx_movie首頁(yè)",
       movies: movies
     })
   })
})
數(shù)據(jù)庫(kù)單條查詢
var Movie = require("./models/movie")

app.get("/", function(req, res) {
 Movie
   .findOne({_id: id})
   .exec(function(err, movies) {
     res.render("index", {
       title: "jx_movie首頁(yè)",
       movies: movies
     })
   })
})
數(shù)據(jù)庫(kù)單條刪除

var Movie = require("./models/movie")

app.get("/", function(req, res) {
 Movie
   .remove({_id: id}, function (err, movie) {
     if(err) {
       console.log(err)
     }
   })
   
})
MongoDB基礎(chǔ)

Schema : 一種以文件形式存儲(chǔ)的數(shù)據(jù)庫(kù)模型骨架,不具備數(shù)據(jù)庫(kù)的操作能力

Model : 由Schema發(fā)布生成的模型,具有抽象屬性和行為的數(shù)據(jù)庫(kù)操作對(duì)

Entity :由Model創(chuàng)建的實(shí)體,他的操作也會(huì)影響數(shù)據(jù)庫(kù)

詳解

Schema —— 一種以文件形式存儲(chǔ)的數(shù)據(jù)庫(kù)模型骨架,無法直接通往數(shù)據(jù)庫(kù)端,也就是說它不具備對(duì)數(shù)據(jù)庫(kù)的操作能力,僅僅只是數(shù)據(jù)庫(kù)模型在程序片段中的一種表現(xiàn),可以說是數(shù)據(jù)屬性模型(傳統(tǒng)意義的表結(jié)構(gòu)),又或著是“集合”的模型骨架。

var mongoose = require("mongoose")
var TestSchema = new mongoose.Schema({
    name : {type:String},
    age : {type:Number,default:0},
    time : {type:Date,default:Date.now},
    emial : {type:String,default:""}
});
 // 基本屬性類型有:字符串、日期型、數(shù)值型、布爾型(Boolean)、null、數(shù)組、內(nèi)嵌文檔等

Model —— 由Schema構(gòu)造生成的模型,除了Schema定義的數(shù)據(jù)庫(kù)骨架以外,還具有數(shù)據(jù)庫(kù)操作的行為,類似于管理數(shù)據(jù)庫(kù)屬性、行為的類。

var db = mongoose.connect("mongodb://127.0.0.1:27017/test");
// 通過Schema創(chuàng)建Model
var TestModel = db.model("test1", TestSchema);

Entity —— 由Model創(chuàng)建的實(shí)體,使用save方法保存數(shù)據(jù),Model和Entity都有能影響數(shù)據(jù)庫(kù)的操作,但Model比Entity更具操作性。

var TestEntity = new TestModel({
    name : "Lenka",
    age : 36,
    email : "lenka@qq.com"
});
console.log(TestEntity.name); // Lenka
console.log(TestEntity.age); // 36
示例 Node.js 連接 MongoDB
$ cnpm install mongodb

與 MySQL 不同的是 MongoDB 會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)和集合,所以使用前我們不需要手動(dòng)去創(chuàng)建。

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

這里是用https://mlab.com 建的一個(gè)mongodb數(shù)據(jù)庫(kù),我們可以看到

{item: "buy flowers"}

數(shù)據(jù)已經(jīng)寫進(jìn)去了
具體實(shí)現(xiàn)可以看這個(gè)用 用node+express+mongodb+ejs寫的小項(xiàng)目todo_app
Windows 平臺(tái)安裝 MongoDB

Redis 安裝

egg-mongoose

egg-mongooseegg.js中操作mogodb的插件。我們以此為例看它如何使用:


真實(shí)項(xiàng)目中:

app/model/user.js

config/config.default.js

config/plugin.js

參考
MongoDB學(xué)習(xí)筆記之Mongoose的使用
MongoDB入門
教程
https://mlab.com/
Intro to NoSQL / MongoDB

mongoose的一些操作命令

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/18998.html

相關(guān)文章

  • 使用React、Node.js、MongoDB、Socket.IO開發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過程(三

    摘要:將就用一下,能實(shí)現(xiàn)相同的功能就可以了。的方法可以從返回最大值,但是新版中的不行,只能通過這樣的方式返回最大值。 前篇 使用React、Node.js、MongoDB、Socket.IO開發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過程(一)使用React、Node.js、MongoDB、Socket.IO開發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過程(二) 原文第十三步,Express API路由 第一個(gè)路由是用來創(chuàng)建角...

    JessYanCoding 評(píng)論0 收藏0
  • Node.js學(xué)習(xí)之路01——不同操作系統(tǒng)下Node.js環(huán)境搭建

    摘要:基本介紹這是一個(gè)基本的環(huán)境搭建不同的操作系統(tǒng)可以選擇不同的安裝方式如果不需要太多的安裝步驟就直接在官網(wǎng)下載最新版安裝包進(jìn)行安裝即可環(huán)境配置必須安裝的軟件更改源與更新系統(tǒng)首先備份下載的源配置文件運(yùn)行生成緩存更新系統(tǒng)安裝使用安裝命 基本介紹 這是一個(gè)基本的Node.js環(huán)境搭建,不同的操作系統(tǒng)可以選擇不同的安裝方式 如果不需要太多的安裝步驟,就直接在Node.js官網(wǎng)下載最新版安裝包進(jìn)行...

    meteor199 評(píng)論0 收藏0
  • node 學(xué)習(xí)筆記 (2)

    摘要:除了定義數(shù)據(jù)結(jié)構(gòu),還可以設(shè)定默認(rèn)值,處理輸入,以及加強(qiáng)校驗(yàn)添加任務(wù)搜索文檔更新文檔 創(chuàng)建一個(gè)http 服務(wù)器 showImg(https://segmentfault.com/img/bVWNvM?w=922&h=163); 服務(wù)器 響應(yīng)方式 showImg(https://segmentfault.com/img/bVWNwI?w=902&h=168); showImg(https...

    高璐 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

zzzmh

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<