Node.js
Node.JS e MongoDB.
Ricerca…
Osservazioni
Queste sono le operazioni CRUD di base per l'uso di mongo db con nodejs.
Domanda: ci sono altri modi in cui puoi fare ciò che viene fatto qui ??
Risposta: Sì, ci sono numerosi modi per farlo.
Domanda: Sta usando la mangusta ??
Risposta: No. Ci sono altri pacchetti disponibili che possono aiutarti.
Domanda: dove posso ottenere la documentazione completa di mangusta ??
Risposta: clicca qui
Connessione a un database
Per connettersi a un database mongo dall'applicazione nodo richiediamo mangusta.
Installazione di Mongoose Vai al toot della tua applicazione e installa mangusta di
npm install mongoose
Quindi ci colleghiamo al database.
var mongoose = require('mongoose');
//connect to the test database running on default mongod port of localhost
mongoose.connect('mongodb://localhost/test');
//Connecting with custom credentials
mongoose.connect('mongodb://USER:PASSWORD@HOST:PORT/DATABASE');
//Using Pool Size to define the number of connections opening
//Also you can use a call back function for error handling
mongoose.connect('mongodb://localhost:27017/consumers',
{server: { poolSize: 50 }},
function(err) {
if(err) {
console.log('error in this')
console.log(err);
// Do whatever to handle the error
} else {
console.log('Connected to the database');
}
});
Creazione di una nuova collezione
Con Mongoose, tutto è derivato da uno schema. Consente di creare uno schema.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var AutoSchema = new Schema({
name : String,
countOf: Number,
});
// defining the document structure
// by default the collection created in the db would be the first parameter we use (or the plural of it)
module.exports = mongoose.model('Auto', AutoSchema);
// we can over write it and define the collection name by specifying that in the third parameters.
module.exports = mongoose.model('Auto', AutoSchema, 'collectionName');
// We can also define methods in the models.
AutoSchema.methods.speak = function () {
var greeting = this.name
? "Hello this is " + this.name+ " and I have counts of "+ this.countOf
: "I don't have a name";
console.log(greeting);
}
mongoose.model('Auto', AutoSchema, 'collectionName');
Ricorda che i metodi devono essere aggiunti allo schema prima di compilarlo con mongoose.model () come fatto sopra.
Inserimento di documenti
Per inserire un nuovo documento nella collezione, creiamo un oggetto dello schema.
var Auto = require('models/auto')
var autoObj = new Auto({
name: "NewName",
countOf: 10
});
Lo salviamo come il seguente
autoObj.save(function(err, insertedAuto) {
if (err) return console.error(err);
insertedAuto.speak();
// output: Hello this is NewName and I have counts of 10
});
Questo inserirà un nuovo documento nella collezione
Lettura
Leggere i dati dalla collezione è molto semplice. Ottenere tutti i dati della collezione.
var Auto = require('models/auto')
Auto.find({}, function (err, autos) {
if (err) return console.error(err);
// will return a json array of all the documents in the collection
console.log(autos);
})
Lettura dei dati con una condizione
Auto.find({countOf: {$gte: 5}}, function (err, autos) {
if (err) return console.error(err);
// will return a json array of all the documents in the collection whose count is greater than 5
console.log(autos);
})
È inoltre possibile specificare il secondo parametro come oggetto di ciò che tutti i campi necessari
Auto.find({},{name:1}, function (err, autos) {
if (err) return console.error(err);
// will return a json array of name field of all the documents in the collection
console.log(autos);
})
Trovare un documento in una raccolta.
Auto.findOne({name:"newName"}, function (err, auto) {
if (err) return console.error(err);
//will return the first object of the document whose name is "newName"
console.log(auto);
})
Trovare un documento in una raccolta tramite id.
Auto.findById(123, function (err, auto) {
if (err) return console.error(err);
//will return the first json object of the document whose id is 123
console.log(auto);
})
In aggiornamento
Per l'aggiornamento di raccolte e documenti possiamo utilizzare uno di questi metodi:
metodi
- aggiornare()
- updateOne ()
- updateMany ()
- replaceOne ()
Aggiornare()
Il metodo update () modifica uno o più documenti (parametri di aggiornamento)
db.lights.update(
{ room: "Bedroom" },
{ status: "On" }
)
Questa operazione cerca la raccolta 'luci' per un documento in cui room
è Bedroom (1 ° parametro) . Quindi aggiorna la proprietà dello status
documenti corrispondenti su On (2 ° parametro) e restituisce un oggetto WriteResult simile al seguente:
{ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }
UpdateOne
Il metodo UpdateOne () modifica UN documento (parametri di aggiornamento)
db.countries.update(
{ country: "Sweden" },
{ capital: "Stockholm" }
)
Questa operazione cerca nella raccolta "Paesi" un documento in cui il country
è la Svezia (1 ° parametro) . Quindi aggiorna la capital
proprietà dei documenti corrispondenti a Stoccolma (2 ° parametro) e restituisce un oggetto WriteResult simile al seguente:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
UpdateMany
Il metodo UpdateMany () modifica i documenti multible (parametri di aggiornamento)
db.food.updateMany(
{ sold: { $lt: 10 } },
{ $set: { sold: 55 } }
)
Questa operazione aggiorna tutti i documenti (in una raccolta "cibo") dove la sold
è inferiore a 10 * (1 ° parametro) impostando sold
a 55 . Quindi restituisce un oggetto WriteResult simile al seguente:
{ "acknowledged" : true, "matchedCount" : a, "modifiedCount" : b }
a = Numero di documenti corrispondenti
b = numero di documenti modificati
ReplaceOne
Sostituisce il primo documento di corrispondenza (documento sostitutivo)
Questo esempio di raccolta denominata Paesi contiene 3 documenti:
{ "_id" : 1, "country" : "Sweden" }
{ "_id" : 2, "country" : "Norway" }
{ "_id" : 3, "country" : "Spain" }
La seguente operazione sostituisce il documento { country: "Spain" }
con documento { country: "Finland" }
db.countries.replaceOne(
{ country: "Spain" },
{ country: "Finland" }
)
E ritorna:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
I Paesi di raccolta di esempio ora contengono:
{ "_id" : 1, "country" : "Sweden" }
{ "_id" : 2, "country" : "Norway" }
{ "_id" : 3, "country" : "Finland" }
Eliminazione
L'eliminazione di documenti da una raccolta in mangusta avviene nel modo seguente.
Auto.remove({_id:123}, function(err, result){
if (err) return console.error(err);
console.log(result); // this will specify the mongo default delete result.
});