Node.js
Node.JS en MongoDB.
Zoeken…
Opmerkingen
Dit zijn de basis CRUD-bewerkingen voor het gebruik van mongo db met nodejs.
Vraag: Zijn er andere manieren om te doen wat hier gebeurt?
Antwoord: Ja, er zijn talloze manieren om dit te doen.
Vraag: Is het gebruik van mangoest noodzakelijk ??
Antwoord: Nee. Er zijn andere pakketten beschikbaar die u kunnen helpen.
Vraag: Waar kan ik volledige documentatie over mangoest krijgen?
Antwoord: Klik hier
Verbinding maken met een database
Om verbinding te maken met een mongo-database vanuit een knooppunttoepassing hebben we mangoest nodig.
Mongoose installeren Ga naar de toot van uw toepassing en installeer mangoeste door
npm install mongoose
Vervolgens maken we verbinding met de 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');
}
});
Nieuwe verzameling maken
Met Mongoose is alles afgeleid van een schema. Laten we een schema maken.
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');
Onthoud dat methoden aan het schema moeten worden toegevoegd voordat het wordt gecompileerd met mongoose.model () zoals hierboven gedaan ..
Documenten invoegen
Voor het invoegen van een nieuw document in de verzameling maken we een object van het schema.
var Auto = require('models/auto')
var autoObj = new Auto({
name: "NewName",
countOf: 10
});
We bewaren het als volgt
autoObj.save(function(err, insertedAuto) {
if (err) return console.error(err);
insertedAuto.speak();
// output: Hello this is NewName and I have counts of 10
});
Hiermee wordt een nieuw document in de verzameling ingevoegd
Lezing
Gegevens uit de verzameling lezen is heel eenvoudig. Alle gegevens van de verzameling ophalen.
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);
})
Gegevens lezen met een voorwaarde
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);
})
U kunt ook de tweede parameter opgeven als object van wat alle velden u nodig heeft
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);
})
Eén document zoeken in een verzameling.
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);
})
Eén document zoeken in een verzameling op 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);
})
Updaten
Voor het bijwerken van collecties en documenten kunnen we een van deze methoden gebruiken:
methoden
- bijwerken()
- updateOne ()
- updateMany ()
- replaceOne ()
Bijwerken()
De methode update () wijzigt een of meerdere documenten (update-parameters)
db.lights.update(
{ room: "Bedroom" },
{ status: "On" }
)
Met deze bewerking wordt in de collectie 'lichten' gezocht naar een document met room
Slaapkamer (1e parameter) . Het werkt dan is de gevonden documenten status
woning aan On (2e parameter) en retourneert een WriteResult object dat ziet er als volgt uit:
{ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }
UpdateOne
De methode UpdateOne () wijzigt EEN document (update parameters)
db.countries.update(
{ country: "Sweden" },
{ capital: "Stockholm" }
)
Met deze bewerking wordt in de verzameling 'landen' gezocht naar een document met het country
Zweden (eerste parameter) . Vervolgens wordt het overeenkomende capital
van de overeenkomende documenten bijgewerkt naar Stockholm (2e parameter) en wordt een WriteResult-object geretourneerd dat er als volgt uitziet:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
UpdateMany
De methode UpdateMany () wijzigt meerdere documenten (updateparameters)
db.food.updateMany(
{ sold: { $lt: 10 } },
{ $set: { sold: 55 } }
)
Deze bewerking werkt alle documenten (in een 'voedselcollectie') bij waar sold
minder is dan 10 * (1e parameter) door de instelling sold
te houden op 55 . Vervolgens wordt een WriteResult-object geretourneerd dat er als volgt uitziet:
{ "acknowledged" : true, "matchedCount" : a, "modifiedCount" : b }
a = Aantal overeenkomende documenten
b = Aantal gewijzigde documenten
ReplaceOne
Vervangt het eerste overeenkomende document (vervangend document)
Deze voorbeeldcollectie met de naam landen bevat 3 documenten:
{ "_id" : 1, "country" : "Sweden" }
{ "_id" : 2, "country" : "Norway" }
{ "_id" : 3, "country" : "Spain" }
De volgende bewerking vervangt het document { country: "Spain" }
door document { country: "Finland" }
db.countries.replaceOne(
{ country: "Spain" },
{ country: "Finland" }
)
En keert terug:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
Het voorbeeld collectie landen bevat nu:
{ "_id" : 1, "country" : "Sweden" }
{ "_id" : 2, "country" : "Norway" }
{ "_id" : 3, "country" : "Finland" }
verwijderen
Het verwijderen van documenten uit een verzameling in mangoest gebeurt op de volgende manier.
Auto.remove({_id:123}, function(err, result){
if (err) return console.error(err);
console.log(result); // this will specify the mongo default delete result.
});