不管是mysql仍是mongodb,傳統的與數據庫交互的方式都是按照他們提供的API來寫代碼。它們提供的API每每不是很容易理解,並且難以記憶,若是傳錯了參數,寫錯一個符號都要查文檔。javascript
ORM(對象關係映射,Object Relational Mapping)框架,容許咱們面向對象操做,不須要記憶任何的數據庫API,只須要操做對象便可,由框架底層去調用數據庫API,這樣就大大提升了程序員的開發效率。html
不過既然多了一層封裝,確定要損失一點點的性能,能夠忽略不計。java
在NodeJS中,操做mongodb最好的ORM框架就是mongoose。node
npm install mongoose --save
若是你本機沒有安裝nodejs驅動,會自動安裝nodejs驅動,由於mongoose依賴nodejs驅動。mysql
文檔參考:mongoose官方文檔:http://mongoosejs.com/docs/index.html
git
'use strict'
let User = require('./model/user');
let mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1/test");
let db = mongoose.connection;
// 監聽錯誤的事件
db.on('error', err => {
console.log(err);
});
db.once('open', () => {
console.log('mongodb connect successfully!');
highOrderQuery()
});
mongoose
使用schema
來描述數據的格式、字段、規則,有了schema
以後能夠生成model
來操做數據。程序員
通常咱們新建一個model目錄來存放這些模型文件,好比這裏咱們新建一個model/user.js
github
'use strict'
let mongoose = require('mongoose');
let schema = mongoose.Schema({
name: String,
age: Number,
address: String,
fav: [String]
}, {
versionKey: false
}
);
module.exports = mongoose.model("users", schema);
直接查看文檔中Model相關API。web
async function testCRUD() {
//增
let arr = [
{
name: "李連杰", age: 50, address: "北京", fav: ["功夫", "演電影", "旅遊"]
},
{
name: "吳京", age: 48, address: "北京", fav: ["功夫", "演電視劇", "運動"]
},
];
let res = await User.create(arr);
console.log(res);
//查
let res = await User.findOne({address: "北京"}); //查詢出符合條件的第一個文檔
console.log(res);
let res = await User.find({address: "北京"}); // 查詢出符合條件的全部文檔
console.log(res);
//改
let res = await User.updateOne({_id: "5b4065e548651d0b7035843d"}, {age: 11, address: "深圳"});
console.log(res);
//刪
let res = await User.deleteOne({_id: "5b4065e548651d0b7035843d"});
console.log(res);
}
全部條件操做符:https://docs.mongodb.com/manual/reference/operator/query/
。sql
async function highOrderQuery() {
//條件查詢
let res = await User.find({age: {$gt: 15}});
//數組查詢
let res = await User.find({
fav: "玩遊戲"
});
//分頁查詢
// sort({age:1}) : 1(默認)是從小到大,-1是從大到小
// sort("-age") :能夠直接寫`-`,表示從大到小
// select("")只選擇某個或某幾個字段;select("-fav")不選某個字段
let res = await User.find().skip(0).limit(2).sort("-age").select("-fav");
console.log(res);
}
黑馬程序員 120天全棧區塊鏈開發 開源教程
https://github.com/itheima1/BlockChain
一番霧語:操做mongodb最好的NodeJS框架。
|
免費知識星球:一番碼客-積累交流 微信公衆號:一番碼客 微信:Efon-fighting 網站:http://www.efonmark.com |