Heim > Web-Frontend > js-Tutorial > Node.js MongoDB-Treiber Mongoose grundlegende Verwendung Tutorial_node.js

Node.js MongoDB-Treiber Mongoose grundlegende Verwendung Tutorial_node.js

WBOY
Freigeben: 2016-05-16 15:12:43
Original
1782 Leute haben es durchsucht

Durch die Verwendung von Mongoose können wir die Mongodb-Datenbank besser nutzen, ohne umständliche Geschäftslogik schreiben zu müssen.

Installation

npm install mongoose
Nach dem Login kopieren

Initialisierung mit
Bevor Sie Mongoose verwenden, müssen Sie Node und Mongodb installieren. Die Installationsmethoden von Node und Mongodb werden hier nicht erläutert.

 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() {
  //这里建立模式和模型
 }
Nach dem Login kopieren

Schnellstart
In Mongoose sind alle Daten ein Schema, und jedes Schema ist einer Mongodb-Sammlung zugeordnet und definiert die Struktur der Sammlungsdatei.

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

Ein Modell ist ein vielfältiger Konstruktor, den wir aus Schema definieren. Instanzen eines Modells können viele Operationen verwenden. Alle Dokumenterstellung und -abrufe werden vom Modell übernommen

 var animalMode = db.model('Animal', animalSchema);
Nach dem Login kopieren
Die Instanz des Modells ist im Wesentlichen eine Datei, und wir können solche Dateien problemlos erstellen und ändern

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

Nach dem Login kopieren

Schema Datentyp

Dies sind alle Datentypen in Schema, einschließlich der benutzerdefinierten Datentypen von mongoose

    Zeichenfolge
  • Nummer
  • Datum
  • Puffer
  • Boolescher Wert
  • Gemischt
  • ObjectId
  • Array
Verwendung jedes Datentyps

 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

Nach dem Login kopieren
Mixed ist ein von Mungo angepasster gemischter Typ. Da Mixed keinen spezifischen Inhalt definiert, kann er mit {} verwendet werden.

 var animalSchema = new Schema({any: {}});
 var animalSchema = new Schema({any: {Schema.Types.Mixed}});
Nach dem Login kopieren
Benutzerdefinierte Methode

Sie können Methoden an Schema binden

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

Nach dem Login kopieren
Sie können Schema auch statische Methoden hinzufügen

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

Nach dem Login kopieren

Index

Wir können Mongodb-Daten indizieren. Um die Datensuche und -positionierung zu verbessern, ist es notwendig, einen zusammengesetzten Index einzurichten

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

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

Nach dem Login kopieren
Die Einrichtung dieser Art von Index kann jedoch erhebliche Auswirkungen auf die Leistung haben. Es wird empfohlen, ihn in der Produktion zu stoppen und die automatische Indizierung im Setup-Modus auf „Falsch“ zu setzen, um
zu deaktivieren

 animalSchema.set('autoIndex', false);
 // or
 new Schema({..}, { autoIndex: false });
Nach dem Login kopieren
Modell

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);
 });
Nach dem Login kopieren
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);
 });

Nach dem Login kopieren
U

Die Update-Funktion Model.update wird in der offiziellen Dokumentation bereitgestellt
Model.update(conditions, doc, [options], [callback])

Bedingungen aktualisieren Bedingungen
  • aktualisierten Inhalt dokumentieren
  • Optionsaktualisierungsoption
  • sicherer (boolescher) abgesicherter Modus, Standardoption, Wert ist wahr
  • upsert (boolean) Gibt an, ob ein neues Dokument erstellt werden soll, wenn die Bedingungen nicht übereinstimmen. Der Standardwert ist false
  • multi (boolean), ob mehrere Dateien aktualisiert werden sollen, der Standardwert ist false
  • Strikter (boolescher) strenger Modus, nur ein Datenelement aktualisieren
  • overwrite (boolean) Daten überschreiben, Standardwert ist false
  • Rückruf
  • Err-Wert wird zurückgegeben, wenn beim Aktualisieren der Daten ein Fehler auftritt
  • Anzahl der Betroffenen (ich weiß es noch nicht)
  • rawResponse Anzahl der betroffenen Zeilen
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);
});
Nach dem Login kopieren
D


animalMode.remove({age: 6}, function(err){
 if (err) console.log(err);
})
Nach dem Login kopieren
Andere
//Anzahl der Dokumente zurückgeben



animalMode.count({age: 2}, function(err, cat){
 if (err) console.log(err);
 console.log(cat);
})
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage