摘要:的邏輯結(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 = MovieDocuments - 文檔實(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-mongooseegg-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
摘要:將就用一下,能實(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)建角...
摘要:基本介紹這是一個(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)行...
摘要:除了定義數(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...
閱讀 2251·2023-04-26 00:00
閱讀 3448·2021-09-24 10:37
閱讀 3622·2021-09-07 09:58
閱讀 1586·2019-08-30 15:56
閱讀 2273·2019-08-30 13:11
閱讀 2365·2019-08-29 16:38
閱讀 1057·2019-08-29 12:58
閱讀 1976·2019-08-27 10:54