Node.js Pemacu MongoDB Mongoose tutorial penggunaan asas_node.js

WBOY
Lepaskan: 2016-05-16 15:12:43
asal
1752 orang telah melayarinya

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

Pemasangan

npm install mongoose
Salin selepas log masuk

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() {
  //这里建立模式和模型
 }
Salin selepas log masuk

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,
 });
Salin selepas log masuk

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);
Salin selepas log masuk

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);
 });

Salin selepas log masuk

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

Salin selepas log masuk

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}});
Salin selepas log masuk

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);
 });

Salin selepas log masuk

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);
 });

Salin selepas log masuk

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

Salin selepas log masuk

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 });
Salin selepas log masuk

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);
 });
Salin selepas log masuk

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);
 });

Salin selepas log masuk

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);
});
Salin selepas log masuk

D

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

Lain-lain
//Kembalikan bilangan dokumen

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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan