Rumah >hujung hadapan web >tutorial js >Node.js Pemacu MongoDB Mongoose tutorial penggunaan asas_node.js

Node.js Pemacu MongoDB Mongoose tutorial penggunaan asas_node.js

WBOY
WBOYasal
2016-05-16 15:12:431783semak imbas

Menggunakan mongoose membolehkan kami menggunakan pangkalan data mongodb dengan lebih baik tanpa menulis logik perniagaan yang menyusahkan.

Pemasangan

npm install mongoose

Mulakan menggunakan
Sebelum menggunakan mongoose, anda perlu memasang nod dan mongodb Kaedah pemasangan nod dan mongodb tidak dibincangkan di sini.

 var mongoose = require("mongoose");
 var Schema = mongoose.Schema;
 var db = mongoose.connection;
 mongoose.connect('mongodb://localhost/animal');
 db.on('error', console.error);
 db.once('open', function() {
  //这里建立模式和模型
 }

Permulaan Pantas
Dalam mongoose, semua data ialah skema dan setiap skema dipetakan ke koleksi mongodb dan mentakrifkan struktur fail koleksi.

 //这里建立一个动物的模式,所有动物都拥有这个模式下的所有属性
 var animalSchema = new Schema({
  name: String,
  age: Number,
 });

Model ialah pembina pelbagai yang kami takrifkan daripada Skema model boleh menggunakan banyak operasi Semua pembuatan dan pengambilan dokumen dikendalikan oleh model

 var animalMode = db.model('Animal', animalSchema);

Instance model pada asasnya ialah fail dan kami boleh membuat dan mengubah suai fail sedemikian dengan mudah

 var cat = new animalMode({
  name: 'catName',
  age: '7', //这里依然使用字符串,mongoose会自动转换类型
  });

 cat.save(function(err, thor) {
  if (err) return console.log(err);
  console.log(thor);
 });
 //或者可以使用create
 //cat.create(function(err, thor) {
 // if (err) return console.log(err);
 // console.log(thor);
 //});

 //执行查找
 animalMode.find(function(err, people){
  if(err) console.log(err);
  console.log(people);
 });
 //查找符合条件数据
 animalMode.findOne({title: 'catName'}, function(err, cat){
  if(err) console.log(err);
  console.log(cat);
 });

Skema
Jenis data

Ini semua jenis data dalam Skema, termasuk jenis data tersuai mongoose

  • Rentetan
  • Nombor
  • Tarikh
  • Penimbal
  • Boolean
  • Campur
  • ObjectId
  • Susun atur

Penggunaan setiap jenis data

 var animalMode = mongoose.model('Animal', schema);

 var cat = new animalMode;
 cat.name = 'Statue of Liberty'    //String
 cat.age = '7';        //Number
 cat.updated = new Date;      //Date
 cat.binary = new Buffer(0);     //Buffer
 cat.living = false;       //Boolean
 cat.mixed = { any: { thing: 'i want' } }; //Mixed    
 cat._someId = new mongoose.Types.ObjectId; //ObjectId
 cat.ofString.push("strings!");    //Array

Mixed ialah jenis campuran yang disesuaikan oleh mongoose Kerana Mixed tidak mentakrifkan kandungan tertentu, ia boleh digunakan dengan {}.

 var animalSchema = new Schema({any: {}});
 var animalSchema = new Schema({any: {Schema.Types.Mixed}});

Kaedah tersuai

Anda boleh mengikat kaedah kepada Skema

 var animalSchema = new Schema({
  name: String,
  age: Number,
 });

 animalSchema.methods.findSimilarTypes = function (cb) {
  return this.model('Animal').find({ name: this.name }, cb);
 }

 var animalMode = db.model('Animal', animalSchema);

 cat.findSimilarTypes(function(err, cat){
  if(err) console.log(err);
  console.log(cat);
 });

Anda juga boleh menambah kaedah statik pada Skema

 animalSchema.statics.findByName = function (name, cb) {
  return this.find({ name: new RegExp(name, 'i') }, cb);
 }
 var animalMode = db.model('Animal', animalSchema);

 animalMode.findByName('catName', function (err, animals) {
  console.log(animals);
 });

Indeks

Kami boleh mengindeks data mongodb menyokong indeks sekunder Untuk meningkatkan carian dan kedudukan data, adalah perlu untuk mewujudkan indeks komposit

 var animalSchema = new Schema({
  name: String,
  age: Number,
  tags: { age: [String], index: true } // field level
 });

 animalSchema.index({ name: 1, age: -1 }); // schema level

Walau bagaimanapun, penubuhan indeks jenis ini boleh menyebabkan kesan prestasi yang ketara Adalah disyorkan untuk menghentikannya dalam pengeluaran dan menetapkan pengindeksan automatik dalam mod persediaan kepada palsu untuk melumpuhkan

.
 animalSchema.set('autoIndex', false);
 // or
 new Schema({..}, { autoIndex: false });

Model
C

 cat.save(function(err, thor) {
  if (err) return console.log(err);
  console.log(thor);
 });
 //或者可以使用create
 cat.create(function(err, thor) {
  if (err) return console.log(err);
  console.log(thor);
 });

R

//find
animalMode.find(function(err, cat){
 if (err) console.log(err);
 console.log(cat);
})

//findOne
animalMode.findOne({name: 'catName'}, function(err, cat){
 if (err) console.log(err);
 console.log(cat);
})

//findByID
//与 findOne 相同,但它接收文档的 _id 作为参数,返回单个文档。_id //可以是字符串或 ObjectId 对象。
animalMode.findById(id, function(err, adventure){
 if (err) consoel.log(err);
 console.log(adventure);
});

//where
//查询数据类型是字符串时,可支持正则
animalMode.where('age', '2').exec(function(err, cat){
 if (err) console.log(err);
 console.log(cat);
});

animalMode
 .where('age').gte(1).lte(10)
 .where('name', 'catName')
 .exec(function(err, cat){
  if (err) console.log(err);
  console.log(cat);
 });

U
Fungsi kemas kini Model.update disediakan oleh dokumentasi rasmi

Model.update(syarat, dokumen, [pilihan], [panggilan balik])

  • syarat kemas kini syarat
  • kandungan dikemas kini dokumen
  • pilihan kemas kini pilihan
  • mod selamat (boolean) selamat, pilihan lalai, nilai adalah benar
  • upsert (boolean) Sama ada untuk mencipta dokumen baharu apabila syarat tidak sepadan, nilai lalai adalah palsu
  • berbilang (boolean) sama ada untuk mengemas kini berbilang fail, nilai lalai adalah palsu
  • mod ketat (boolean) ketat, hanya kemas kini satu keping data
  • tulis ganti (boolean) data ganti, lalai adalah palsu
  • panggilan balik
  • nilai ralat dikembalikan apabila terdapat ralat dalam mengemas kini data
  • nombor Terjejas (saya belum tahu lagi)
  • rawResponse Bilangan baris yang terjejas
animalMode.update({name: 'catName'}, {age: '6'}, {multi : true}, function(err, numberAffected, raw){
 if (err) return console.log(err);
 console.log('The number of updated documents was %d', numberAffected);
 console.log('The raw response from Mongo was ', raw);
});

D

animalMode.remove({age: 6}, function(err){
 if (err) console.log(err);
})

Lain-lain
//Kembalikan bilangan dokumen

animalMode.count({age: 2}, function(err, cat){
 if (err) console.log(err);
 console.log(cat);
})

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn