成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Node學習記錄: mongodb

zzzmh / 1309人閱讀

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

簡介

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

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

集合(Collection):多個文檔組成一個集合(collection),相當于關系數(shù)據(jù)庫的表。

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

一個MongoDB實例支持多個數(shù)據(jù)庫(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 它能對Mongodb進行建模操作

安裝及引用 安裝
npm install mongoose
引用mongoose
 var mongoose = require(“mongoose”);
使用mongoose鏈接數(shù)據(jù)庫
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ù)庫連接失?。骸?+ error); 
}); 
db.connection.on(“open”, function () { 
console.log(“——數(shù)據(jù)庫連接成功!——”); 
});
Schema-模式定義

在模式里面我們對字段進行定義,可以定義字段的類型

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時候?qū)魅氲腟chema也就是模式進行編譯,然后生成構造函數(shù)

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

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

module.export = Movie
Documents - 文檔實例化

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

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

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

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

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

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

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

只需要調(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首頁",
       movies: movies
     })
   })
})
數(shù)據(jù)庫單條查詢
var Movie = require("./models/movie")

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

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

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

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

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

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

詳解

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

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構造生成的模型,除了Schema定義的數(shù)據(jù)庫骨架以外,還具有數(shù)據(jù)庫操作的行為,類似于管理數(shù)據(jù)庫屬性、行為的類。

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)建的實體,使用save方法保存數(shù)據(jù),Model和Entity都有能影響數(shù)據(jù)庫的操作,但Model比Entity更具操作性。

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

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

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

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

{item: "buy flowers"}

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

Redis 安裝

egg-mongoose

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


真實項目中:

app/model/user.js

config/config.default.js

config/plugin.js

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

mongoose的一些操作命令

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/18998.html

相關文章

  • 使用React、Node.js、MongoDB、Socket.IO開發(fā)一個角色投票應用的學習過程(三

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

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

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

    meteor199 評論0 收藏0
  • node 學習筆記 (2)

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

    高璐 評論0 收藏0

發(fā)表評論

0條評論

zzzmh

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<