摘要:的邏輯結(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 = MovieDocuments - 文檔實例化
有了數(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-mongooseegg-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
摘要:將就用一下,能實現(xiàn)相同的功能就可以了。的方法可以從返回最大值,但是新版中的不行,只能通過這樣的方式返回最大值。 前篇 使用React、Node.js、MongoDB、Socket.IO開發(fā)一個角色投票應用的學習過程(一)使用React、Node.js、MongoDB、Socket.IO開發(fā)一個角色投票應用的學習過程(二) 原文第十三步,Express API路由 第一個路由是用來創(chuàng)建角...
摘要:基本介紹這是一個基本的環(huán)境搭建不同的操作系統(tǒng)可以選擇不同的安裝方式如果不需要太多的安裝步驟就直接在官網(wǎng)下載最新版安裝包進行安裝即可環(huán)境配置必須安裝的軟件更改源與更新系統(tǒng)首先備份下載的源配置文件運行生成緩存更新系統(tǒng)安裝使用安裝命 基本介紹 這是一個基本的Node.js環(huán)境搭建,不同的操作系統(tǒng)可以選擇不同的安裝方式 如果不需要太多的安裝步驟,就直接在Node.js官網(wǎng)下載最新版安裝包進行...
摘要:除了定義數(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...
閱讀 2163·2023-04-26 00:00
閱讀 3277·2021-09-24 10:37
閱讀 3539·2021-09-07 09:58
閱讀 1530·2019-08-30 15:56
閱讀 2225·2019-08-30 13:11
閱讀 2321·2019-08-29 16:38
閱讀 970·2019-08-29 12:58
閱讀 1889·2019-08-27 10:54