Apakah mongooes dalam nod
Dalam nod, mongooes ialah modul pihak ketiga dan perpustakaan model dokumen objek (ODM) Ia terus mengoptimumkan dan merangkum modul MongoDB asli Node dan boleh mengendalikan pangkalan data MongoDB dengan mengendalikan model objek.
Persekitaran pengendalian tutorial ini: sistem Windows 7, nodejs versi 12.19.0, komputer DELL G3.
Mongoose
Mongoose ialah modul Nodejs Modul ini boleh mengendalikan modul MongoDB untuk mengendalikan pangkalan data
Mongooose. ialah perpustakaan Model Dokumen Objek (ODM) yang mengoptimumkan dan merangkum modul MongoDB asli Node dan menyediakan lebih banyak fungsi.
Mongoose ialah alat model objek untuk MongoDB Ia adalah pemacu nodejs untuk MongoDB yang dibangunkan berdasarkan node-mongodb-native Ia juga kini menjadi pustaka pilihan untuk Node.js untuk mengendalikan MongoDB.
Manfaat Mongoose
Boleh mencipta struktur skema (kekangan) (Skema) untuk dokumen
-
Objek/dokumen dalam model boleh disahkan
Data boleh ditukar taip kepada model objek
Boleh digunakan menggunakan middleware Business logic hooking
lebih mudah daripada pemacu MongoDB asli Node
Nota: Untuk menggunakannya, anda mesti memasang node.js dan mongodb terlebih dahulu .
pemasangan mongoose
npm install mongoose
Selepas pemasangan berjaya, seperti yang ditunjukkan di bawah:
Selepas pemasangan berjaya, anda boleh menggunakannya melalui require('mongoose')
!
Rentetan sambungan
Cipta db.js
var mongoose = require('mongoose'), DB_URL = 'mongodb://localhost:27017/mongoosesample';/** * 连接 */mongoose.connect(DB_URL);/** * 连接成功 */mongoose.connection.on('connected', function () { console.log('Mongoose connection open to ' + DB_URL); }); /** * 连接异常 */mongoose.connection.on('error',function (err) { console.log('Mongoose connection error: ' + err); }); /** * 连接断开 */mongoose.connection.on('disconnected', function () { console.log('Mongoose connection disconnected'); });
Panggil nod db.js untuk dilaksanakan dan anda akan lihat Output adalah seperti yang ditunjukkan di bawah
Seperti yang dapat dilihat daripada kod, beberapa acara dipantau, dan pelaksanaan mencetuskan acara yang disambungkan, yang bermaksud sambungan berjaya
sambungan Terdapat lebih daripada sekadar peristiwa di atas, kuncinya bergantung pada acara yang ingin anda pantau.
Acara lain boleh dilihat sendiri: http://mongoosejs.com/docs/api.html#connection_Connection
Ini adalah rentetan sambungan yang paling mudah, sudah tentu terdapat bentuk lain, seperti sebagai: Kata laluan sambungan, tetapan sambungan pangkalan data, sambungan mod kluster, dll. diterangkan di sini Sila semak dokumentasi API sendiri apabila menggunakannya
http://mongoosejs.com/docs/api.html#index. -js
Skema
Skema ialah corak data yang digunakan dalam mongoose, yang boleh difahami sebagai takrifan struktur jadual setiap skema akan dipetakan ke dalam koleksi mongodb , ia tidak mempunyai keupayaan untuk mengendalikan pangkalan data
Kami mula-mula mengubah db.js dan mengeksport objek mongoose
var mongoose = require('mongoose'), DB_URL = 'mongodb://localhost:27017/mongoosesample';/** * 连接 */mongoose.connect(DB_URL);/** * 连接成功 */mongoose.connection.on('connected', function () { console.log('Mongoose connection open to ' + DB_URL); }); /** * 连接异常 */mongoose.connection.on('error',function (err) { console.log('Mongoose connection error: ' + err); }); /** * 连接断开 */mongoose.connection.on('disconnected', function () { console.log('Mongoose connection disconnected'); }); module.exports = mongoose;
Sekarang kami mentakrifkan Skema pengguna dan menamakannya user.js
mongoose = require('./db.js'= UserSchema = userpwd: {type: String}, userage: {type: Number}, logindate : { type: Date}
Mentakrifkan Skema adalah semudah menyatakan nama medan dan jenis
Jenis Skema jenis terbina dalam adalah seperti berikut:
String
Nombor
Boolean |. 🎜>Penimbal
Tarikh
ObjectId |. >
Skema Anda juga boleh melakukan beberapa perkara biasa, yang akan dibincangkan kemudian! -
Model
Selepas mentakrifkan Skema, langkah seterusnya ialah menjana Model. - Model ialah model yang dijana oleh skema, yang boleh mengendalikan pangkalan data
Kami menjana model Pengguna untuk skema pengguna yang ditakrifkan di atas dan mengeksportnya Kod yang diubah suai adalah seperti berikut
Operasi pangkalan data biasa Seterusnya, cipta fail test.js untuk menunjukkan beberapa operasi biasa. Sisipkan
Model#save([fn])
Hasilnya boleh dilihat dalam alat robmongo
Anda boleh lihat dari gambar bahawa sisipan itu berjaya!
更新
Model.update(conditions, update, [options], [callback])
var User = require("./user.js");function update(){ var wherestr = {'username' : 'Tracy McGrady'}; var updatestr = {'userpwd': 'zzzz'}; User.update(wherestr, updatestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } update();
根据用户名更新密码,执行后结果如图
图中可以看出,密码更新成功!update方法基本可以满足所有更新!
常用方法还有findByIdAndUpdate,这种比较有指定性,就是根据_id
Model.findByIdAndUpdate(id, [update], [options], [callback])
var User = require("./user.js");function findByIdAndUpdate(){ var id = '56f2558b2dd74855a345edb2'; var updatestr = {'userpwd': 'abcd'}; User.findByIdAndUpdate(id, updatestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } findByIdAndUpdate();
其它更新方法
Model.findOneAndUpdate([conditions], [update], [options], [callback]) //找到一条记录并更新
删除
Model.remove(conditions, [callback])
var User = require("./user.js");function del(){ var wherestr = {'username' : 'Tracy McGrady'}; User.remove(wherestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } del();
结果就不贴了,res中会返回是否成功以及影响的行数:{"ok":1,"n":1}
其它常用方法还有:
Model.findByIdAndRemove(id, [options], [callback])
Model.findOneAndRemove(conditions, [options], [callback])
条件查询
已先插入一些测试数据 。。
Model.find(conditions, [fields], [options], [callback])
var User = require("./user.js"); function getByConditions(){ var wherestr = {'username' : 'Tracy McGrady'}; User.find(wherestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getByConditions();
结果我就不展示了
第2个参数可以设置要查询输出的字段,比如改成
var User = require("./user.js"); function getByConditions(){ var wherestr = {'username' : 'Tracy McGrady'}; var opt = {"username": 1 ,"_id": 0}; User.find(wherestr, opt, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getByConditions();
输出只会有username字段,设置方法如上,1表示查询输出该字段,0表示不输出
比如我要查询年龄范围条件应该怎么写呢?
User.find({userage: {$gte: 21, $lte: 65}}, callback); //这表示查询年龄大于等21而且小于等于65岁
其实类似的还有:
$or 或关系
$nor 或关系取反
$gt 大于
$gte 大于等于
$lt 小于
$lte 小于等于
$ne 不等于
$in 在多个值范围内
$nin 不在多个值范围内
$all 匹配数组中多个值
$regex 正则,用于模糊查询
$size 匹配数组大小
$maxDistance 范围查询,距离(基于LBS)
$mod 取模运算
$near 邻域查询,查询附近的位置(基于LBS)
$exists 字段是否存在
$elemMatch 匹配内数组内的元素
$within 范围查询(基于LBS)
$box 范围查询,矩形范围(基于LBS)
$center 范围醒询,圆形范围(基于LBS)
$centerSphere 范围查询,球形范围(基于LBS)
$slice 查询字段集合中的元素(比如从第几个之后,第N到第M个元素)
可能还有一些,没什么印象,大家自行看看api ^_^!
数量查询
Model.count(conditions, [callback])
var User = require("./user.js"); function getCountByConditions(){ var wherestr = {}; User.count(wherestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getCountByConditions();
res会输出数量,也可以传入条件做条件查询!
根据_id查询
Model.findById(id, [fields], [options], [callback])
var User = require("./user.js"); function getById(){ var id = '56f261fb448779caa359cb73'; User.findById(id, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getById();
这个还是比较常用,要据ID得到数据!
模糊查询
var User = require("./user.js"); function getByRegex(){ var whereStr = {'username':{$regex:/m/i}}; User.find(whereStr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getByRegex();
上面示例中查询出所有用户名中有'm'的名字,且不区分大小写,模糊查询比较常用,正则形式匹配,正则方式就是javascript正则,用到的比较多!
分页查询
var User = require("./user.js"); function getByPager(){ var pageSize = 5; //一页多少条 var currentPage = 1; //当前第几页 var sort = {'logindate':-1}; //排序(按登录时间倒序) var condition = {}; //条件 var skipnum = (currentPage - 1) * pageSize; //跳过数 User.find(condition).skip(skipnum).limit(pageSize).sort(sort).exec(function (err, res) { if (err) { console.log("Error:" + err); } else { console.log("Res:" + res); } }) } getByPager();
分页是用得比较多的查询,分页原理用过其它数据库的都知道,分页用到的函数和mysql的比较类似
上面我用到sort(),这个是排序规则,就不单讲了!
其它操作
其它还有比较多常用的
索引和默认值
再看看我对user.js这个schema的修改
/** * 用户信息 */ var mongoose = require('./db.js'), Schema = mongoose.Schema; var UserSchema = new Schema({ username : { type: String , index: true}, //用户账号 userpwd: {type: String}, //密码 userage: {type: Number}, //年龄 logindate : { type: Date, default:Date.now} //最近登录时间 }); module.exports = mongoose.model('User',UserSchema);
index :建索引
default:默认值
LBS地址位置
lbs : { type: Array, index: '2d', sparse: true } //地理位置
上面有介绍过很多基于LBS的条件查询,Schema中定义时如上
LBS查询对于一些基于LBS应用会用得比较多。
其它常用方法
Model.distinct(field, [conditions], [callback]) //去重
Model.findOne(conditions, [fields], [options], [callback]) //查找一条记录
Model.findOneAndRemove(conditions, [options], [callback]) //查找一条记录并删除
Model.findOneAndUpdate([conditions], [update], [options], [callback]) //查找一条记录并更新
更多node相关知识,请访问:nodejs 教程!
Atas ialah kandungan terperinci Apakah mongooes dalam nod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara memadam nod dengan nvm: 1. Muat turun "nvm-setup.zip" dan pasangkannya pada pemacu C 2. Konfigurasikan pembolehubah persekitaran dan semak nombor versi melalui arahan "nvm -v" 3. Gunakan "nvm arahan install" Pasang nod; 4. Padamkan nod yang dipasang melalui arahan "nvm uninstall".

Bagaimana untuk mengendalikan muat naik fail? Artikel berikut akan memperkenalkan kepada anda cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod saya harap ia akan membantu anda!

Dalam tempoh ini, saya sedang membangunkan perkhidmatan dinamik HTML yang biasa kepada semua kategori dokumen Tencent Untuk memudahkan penjanaan dan penggunaan akses kepada pelbagai kategori, dan untuk mematuhi trend beralih ke awan, saya sedang mempertimbangkan. menggunakan Docker untuk membetulkan kandungan perkhidmatan dan mengurus versi produk secara seragam. Artikel ini akan berkongsi pengalaman pengoptimuman yang saya kumpulkan dalam proses perkhidmatan Docker untuk rujukan anda.

Artikel ini akan berkongsi dengan anda alat pengurusan proses Node "pm2", dan bercakap tentang mengapa pm2 diperlukan, cara memasang dan menggunakan pm2, saya harap ia akan membantu semua orang!

Penjelasan dan Panduan Pemasangan Terperinci untuk Pinetwork Nodes Artikel ini akan memperkenalkan ekosistem pinetwork secara terperinci - nod pi, peranan utama dalam ekosistem pinetwork, dan menyediakan langkah -langkah lengkap untuk pemasangan dan konfigurasi. Selepas pelancaran Rangkaian Ujian Blockchain Pinetwork, nod PI telah menjadi bahagian penting dari banyak perintis yang aktif mengambil bahagian dalam ujian, bersiap sedia untuk pelepasan rangkaian utama yang akan datang. Jika anda tidak tahu kerja pinet, sila rujuk apa itu picoin? Berapakah harga untuk penyenaraian? Penggunaan PI, perlombongan dan analisis keselamatan. Apa itu Pinetwork? Projek Pinetwork bermula pada tahun 2019 dan memiliki syiling pi cryptocurrency eksklusifnya. Projek ini bertujuan untuk mewujudkan satu yang semua orang boleh mengambil bahagian

Bagaimana untuk membungkus fail boleh laku nodejs dengan pkg? Artikel berikut akan memperkenalkan kepada anda cara menggunakan pkg untuk membungkus projek Node ke dalam fail boleh laku. Saya harap ia akan membantu anda!

npm node gyp gagal kerana versi "node-gyp.js" dan "Node.js" tidak sepadan Penyelesaiannya: 1. Kosongkan cache nod melalui "npm cache clean -f" 2. Melalui "npm install -. g n" Pasang modul n; 3. Pasang versi "nod v12.21.0" melalui arahan "n v12.21.0".

Apakah sistem log masuk tunggal? Bagaimana untuk melaksanakannya menggunakan nodejs? Artikel berikut akan memperkenalkan kepada anda cara menggunakan nod untuk melaksanakan sistem log masuk tunggal. Saya harap ia akan membantu anda!
